我想在PostgreSQL中设置一个表,这样两个列在一起必须是唯一的。任何一个值都可以有多个值,只要没有两个值同时共享即可。
例如:
CREATE TABLE someTable (
id int PRIMARY KEY AUTOINCREMENT,
col1 int NOT NULL,
col2 int NOT NULL
)
因此,col1
和col2
可以重复,但不能同时进行。因此,这是允许的(不包括id)
1 1
1 2
2 1
2 2
但不是这样的:
1 1
1 2
1 1 -- would reject this insert for violating constraints
发布于 2013-01-09 02:38:46
CREATE TABLE someTable (
id serial PRIMARY KEY,
col1 int NOT NULL,
col2 int NOT NULL,
UNIQUE (col1, col2)
)
autoincrement
不是postgresql。您需要一个integer primary key generated always as identity
(如果您使用的是PG 9或更低版本,则需要serial
。serial
was soft-deprecated in PG 10)。
如果col1
和col2
是唯一的,并且不能为空,那么它们就是一个很好的主键:
CREATE TABLE someTable (
col1 int NOT NULL,
col2 int NOT NULL,
PRIMARY KEY (col1, col2)
)
发布于 2013-01-09 02:42:58
创建两个数字不能一起重复的唯一约束:
ALTER TABLE someTable
ADD UNIQUE (col1, col2)
发布于 2013-01-09 02:38:40
https://stackoverflow.com/questions/14221775
复制相似问题