PostgreSQL:主键
根据PostgreSQL文档,一个表最多可以有一个主键(同时它可以有许多唯一的非空约束) 那么,如果将两列设为下表中的主键,会发生什么情况PostgreSQL:主键,postgresql,primary-key,Postgresql,Primary Key,根据PostgreSQL文档,一个表最多可以有一个主键(同时它可以有许多唯一的非空约束) 那么,如果将两列设为下表中的主键,会发生什么情况 CREATE TABLE example ( a integer, b integer, c integer, PRIMARY KEY (a, c) ); “主”主键是“a”还是仅为a和c设置了唯一/非空约束?postgresql如何知道哪一个是主键 任何帮助都会很好。谢谢 还有,下面会产生什么?主键仍然是a和c的组合,还是
CREATE TABLE example (
a integer,
b integer,
c integer,
PRIMARY KEY (a, c)
);
“主”主键是“a”还是仅为a和c设置了唯一/非空约束?postgresql如何知道哪一个是主键
任何帮助都会很好。谢谢
还有,下面会产生什么?主键仍然是a和c的组合,还是a是主键而c只是唯一/不为null的约束
CREATE TABLE example (
a integer PRIMARY KEY,
b integer,
c integer,
PRIMARY KEY (c)
);
经过测试,上述产品:
ERROR: multiple primary keys for table "example" are not allowed
LINE 5: PRIMARY KEY (c)
ERROR: multiple primary keys for table "example" are not allowed
LINE 4: c integer PRIMARY KEY
第三种情况可能与上述情况相同:
CREATE TABLE example (
a integer PRIMARY KEY,
b integer,
c integer PRIMARY KEY
);
经过测试,上述产品:
ERROR: multiple primary keys for table "example" are not allowed
LINE 5: PRIMARY KEY (c)
ERROR: multiple primary keys for table "example" are not allowed
LINE 4: c integer PRIMARY KEY
在第二种情况下,
a
和c
的组合是DB table示例
的唯一主键。这意味着a
可能不是唯一的,c
可能不是唯一的,但是a和c的组合在每行中应该是唯一的。从这个意义上讲,没有“a是主键”这样的东西
您的第三个和第四个案例不是有效的PostgreSQL代码。我过去经常证实这一点。好的,这很好。我使用“main”这个词是因为一个表只能有一个主键。在这种情况下,“主”主键是a和c的组合。同样,在第二种情况下会发生什么。请参阅已编辑的问题。@我不确定这是有效的PostgreSQL代码。你测试过吗?@EliMiller我不知道你是否知道(你可能知道),但它非常适合测试DB风格的有效代码。所以,如果你愿意,你可以亲自检查。