18 mysql
今天我发现你可以使用两列(tsql)来获得主键.PK必须是唯一的,但两列都不是(组合必须是唯一的).
我觉得这很酷.至少有两个问题,我问过人们在哪里大吼我说我做的(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)
);
Run Code Online (Sandbox Code Playgroud)
我跑了下面所以看起来我正在做我认为(组合必须是唯一的.但是列中的相同值不需要是唯一的).我应该知道什么吗?关于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'
Run Code Online (Sandbox Code Playgroud)
Boh*_*ian 31
你在想这个:
因此,A和B 在一起,必须是唯一的.
a和b的个体价值无关紧要.
我相信正在发生的事情是成对的列一起成为主列。例如,您知道不能有重复的主列,例如:如果 col“a”是主列,则不能有两行具有相同的 a 值。
在此示例中,您有两个初选;这意味着每一列对只能有一个唯一值。例如,如果 col 'a' 和 'b' 是主要的,而 'c' 不是: a|b|c 1,2,3 有效 1,4,5 有效,5,1,6 有效 9,1,10 有效
但你不能有: 9,8,10 9,8,6 因为对于那对 (9,8) 你只能有一个唯一的值......
这有意义吗?或者您希望我进一步详细说明?
| 归档时间: |
|
| 查看次数: |
54107 次 |
| 最近记录: |