今日、私はあなたが2つの列(tsql)を使って主キーを持つことができることを知りました。 PKは一意である必要がありますが、両方の列は一致しません(コンボは一意でなければなりません)。mysqlの主キーとして2つの列?
とてもクールだと思いました。少なくとも2つのSOの質問がありました。私が私の(mysql)データベースを間違っているという人が私に叫んだところ、1人だけが間違っていると言っていました。だから...これは私にある程度の疑念を残す
これは私がそれをすると思いますか?
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'
このことを私たちに示す方法は、正しく理解していることを示唆しています。 –
@ s.bandara yep。私はちょうど肛門のnoobsまでこれをチョークするつもりです。 (私のテーブルが悪いデザインだと叫んで、私はPKが必要ですが、上記を示唆していません) –
なぜ、あなたがこれをやりたいのかについての1つのポイントが正当化されます。 –