在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,col2 int NOT NULL,unique (col1,col2)
)

autoincrement不是postgresql。你想要一个串口。

如果col1和col2是唯一的并且不能为null,那么它们就是一个很好的主键:

CREATE TABLE soMetable (
    col1 int NOT NULL,primary key (col1,col2)
)

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...