今日、2 つの列 (tsql) を使用して主キーを作成できることがわかりました。PK は一意である必要がありますが、両方の列は一意ではありません (コンボは一意である必要があります)。
とてもかっこいいと思いました。私が(mysql)データベースを間違って実行していると人々が私に怒鳴った場所で、少なくとも2つのSOの質問がありました。だから...これは私にいくつかの疑問を残します
これは私が思うことをしますか?
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'