在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)); 
更多在这里