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