gpt4 book ai didi

mysql - 两列作为mysql中的主键?

转载 作者:IT老高 更新时间:2023-10-28 23:53:51 26 4
gpt4 key购买 nike

今天我发现您可以使用两列 (tsql) 来拥有一个主键。 PK 必须是唯一的,但两列都不是(组合必须是唯一的)。

我觉得这很酷。至少有两个 SO 问题我问过人们在哪里对我大喊大叫说我做我的 (mysql) 数据库是错误的,只有一个人说我做的很好。所以...这让我有些怀疑

这是否符合我的预期?

create table User(
id INT primary key AUTO_INCREMENT ,
ipaddr TEXT NOT NULL ,
email TEXT NOT NULL
);
create table test(
a INT NOT NULL ,
b INT NOT NULL ,
dummy INT NOT NULL ,
FOREIGN KEY (a) REFERENCES User(id),
FOREIGN KEY (b) REFERENCES User(id),
PRIMARY KEY(a,b)
);

我运行了下面的代码,所以看起来我正在做我想做的事情(组合必须是唯一的。但是列中的相同值不需要是唯一的)。我应该知道什么吗?就 mysql 而言,没有人向我提及这一点一定是有原因的?

mysql> insert into test(a,b,dummy) select 1,1,1;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> insert into test(a,b,dummy) select 1,2,2;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> insert into test(a,b,dummy) select 2,1,3;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> insert into test(a,b,dummy) select 2,2,4;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> insert into test(a,b,dummy) select 1,2,5;
ERROR 1062 (23000): Duplicate entry '1-2' for key 'PRIMARY'

最佳答案

你想太多了:

  • 主键(无论涉及多少列)必须是唯一的
  • 您的主键是 a、b 两列

因此a和b一起必须是唯一的。

a 和 b 的个体值无关。

关于mysql - 两列作为mysql中的主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14206868/

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