gpt4 book ai didi

PostgreSQL:主键

转载 作者:行者123 更新时间:2023-11-29 13:02:56 25 4
gpt4 key购买 nike

根据 PostgreSQL 文档,一张表最多只能有一个主键(同时它可以有许多唯一且非空的约束)。

CREATE TABLE products (
product_no integer PRIMARY KEY,
name text,
price numeric
);

那么当您像下表那样将两列作为主键时会发生什么?

CREATE TABLE example (
a integer,
b integer,
c integer,
PRIMARY KEY (a, c)
);

“主”主键是“a”还是只是为 a 和 c 设置的唯一/非空约束? postgresql怎么知道哪个是主键?

任何帮助都会很棒。谢谢

另外,下面会产生什么?主键仍然是 a 和 c 的组合,还是 a 是主键而 c 只是一个唯一/非空的约束?

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)

第三种情况可能与上述情况相同:

CREATE TABLE example (
a integer PRIMARY KEY,
b integer,
c integer PRIMARY KEY
);

测试以上结果后:

ERROR:  multiple primary keys for table "example" are not allowed
LINE 4: c integer PRIMARY KEY

最佳答案

第二种情况,ac组合是DB表的唯一主键example。这意味着 a 可能不是唯一的,c 可能不是唯一的,但 a 和 c 的组合在每行中应该是唯一的。从这个意义上讲,不存在“a 是主要主键”这样的东西。

您的第三种和第四种情况不是有效的 PostgreSQL 代码。我用了SQL Fiddle确认一下。

关于PostgreSQL:主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23790697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com