Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 代码生成两个主键?_Sql - Fatal编程技术网

Sql 代码生成两个主键?

Sql 代码生成两个主键?,sql,Sql,我在postgresql上看到了这一点: 我得到了类似于CHECK(price>0)的约束,但我不知道在传递主键的地方传递代码和类似标题的参数意味着什么 这两个设置都是主键吗 可以有两个主键吗?这不是两个主键,而是一个单一的复合主键 这意味着主键由两列组成code和title(因此为code\u title约束名称) 因此,虽然可以有重复代码和重复标题的行,但没有两行可以有相同的code/title组合: code title ---- ----- 0000 aaaaa Okay.

我在postgresql上看到了这一点:

我得到了类似于
CHECK(price>0)
的约束,但我不知道在传递主键的地方传递代码和类似标题的参数意味着什么

这两个设置都是主键吗


可以有两个主键吗?

这不是两个主键,而是一个单一的复合主键

这意味着主键由两列组成
code
title
(因此为
code\u title
约束名称)

因此,虽然可以有重复代码和重复标题的行,但没有两行可以有相同的
code/title
组合:

code  title
----  -----
0000  aaaaa    Okay.
0000  bbbbb    Okay.
1111  bbbbb    Okay.
0000  aaaaa    ** No! Conflicts with first row. **

正如paxdiablo所说,您拥有的是一个复合密钥

+-------+
|A B C D|
+-------+
|1 2 2 3|
+-------+
|2 3 2 4|
+-------+
|3 2 2 3|
+-------+
|4 4 3 2|
+-------+
-A在这里可以是主键,因为它没有重复的行

+-------+
|A B C D|
+-------+
|1 2 3 2|
+-------+
|1 3 2 3|
+-------+
|2 2 3 2|
+-------+
|1 1 3 3|
+-------+
-A不能是此处的主键,因为它有重复的行 -A、 B可以是复合键,组合起来它们没有重复的行(12、13、22、11)


此外,不可能有多个主键。在主键之后,可以有唯一的键,这样可以防止该列重复,但主键会自动设置为索引。

因此,如果产品具有相同的代码和标题,这只会引发错误?
+-------+
|A B C D|
+-------+
|1 2 3 2|
+-------+
|1 3 2 3|
+-------+
|2 2 3 2|
+-------+
|1 1 3 3|
+-------+