在Postgresql中,在两列的组合上强制唯一
我想在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
CREATE TABLE someTable ( id serial primary key, col1 int NOT NULL, col2 int NOT NULL, unique (col1, col2) )
autoincrement
不是postgresql。 你想要一个serial
。
如果col1和col2是唯一的,并且不能为null,那么他们会创build一个好的主键:
CREATE TABLE someTable ( col1 int NOT NULL, col2 int NOT NULL, primary key (col1, col2) )
创build两个数字不能一起重复的唯一约束:
ALTER TABLE someTable ADD UNIQUE (col1, col2)
看起来像常规的唯一约束:)
CREATE TABLE example ( a integer, b integer, c integer, UNIQUE (a, c));
更多在这里