今天我发现你可以使用两列(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)
);
我运行了以下内容,因此看来我正在做我认为的事情(组合必须是唯一的。但列中的相同值不需要是唯一的)。我应该知道什么吗?关于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'