在MySQL中有没有办法拥有两个独特的密钥并以某种方式连接它们?
例如,如果我有下表,'title'和'store'是唯一键
id | category | title | price | store
1 | outdoors | fishing rod | 59.99 | wal-mart
2 | auto | Penzoil Oil | 9.99 | target
我尝试插入以下记录。这个新记录将被忽略,因为标题是“钓鱼竿”并且商店是'wal-mart'并且存在具有该标题和商店的现有记录
| outdoors | fishing rod | 30.99 | wal-mart
但如果我试图插入以下记录,则会被接受,因为没有记录存在标题为“钓鱼竿”和“目标”的存储
| outdoors | fishing rod | 30.99 | target
只有MySQL才有可能吗?
答案 0 :(得分:27)
您可以在多个列上定义索引,例如:
CREATE UNIQUE INDEX arbitrary_index_name ON table_name (title, store);
答案 1 :(得分:7)
是。您应该在两列上创建一个唯一约束,而不是两个单独的唯一约束。
CREATE INDEX
语法为:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[index_type]
ON tbl_name (index_col_name,...)
[algorithm_option | lock_option] ...
对于您的示例,它看起来像这样:
CREATE UNIQUE INDEX index_name ON tbl_name (title,store);
您还必须删除您创建的两个不正确的唯一索引。
有关如何创建索引的详细信息,请参阅documentation。
答案 2 :(得分:1)
答案 3 :(得分:1)
ALTER TABLE table_name
ADD UNIQUE INDEX(title
,store
);
答案 4 :(得分:-1)
是的,你可以!
ALTER TABLE table_name DROP PRIMARY KEY;
ALTER TABLE table_name ADD PRIMARY KEY(title, store);