mysql结合了唯一的密钥

Dav*_*vid 13 mysql unique-constraint

在MySQL有没有办法有两个独特的键并以某种方式连接它们?

例如,如果我有下表,'title'和'store'是一个唯一的键

id | category | title       | price | store
1  | outdoors | fishing rod | 59.99 | wal-mart
2  | auto     | Penzoil Oil | 9.99  | target
Run Code Online (Sandbox Code Playgroud)

我尝试插入以下记录.这个新记录将被忽略,因为标题是"钓鱼竿"而商店是"沃尔玛"并且有一个现有的记录与该标题和商店

   | outdoors | fishing rod | 30.99 | wal-mart
Run Code Online (Sandbox Code Playgroud)

但如果我试图插入以下记录,它将被接受,因为没有记录存在标题为"钓鱼竿"和"目标"的存储

   | outdoors | fishing rod | 30.99 | target
Run Code Online (Sandbox Code Playgroud)

只有MySQL才有可能吗?

Bug*_*ugs 27

您可以在多个列上定义索引,例如:

CREATE UNIQUE INDEX arbitrary_index_name ON table_name (title, store);
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 7

是.您应该在两列上创建一个唯一约束,而不是两个单独的唯一约束.

CREATE INDEX语法是:

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
    [index_type]
    ON tbl_name (index_col_name,...)
    [algorithm_option | lock_option] ...
Run Code Online (Sandbox Code Playgroud)

对于您的示例,它看起来像这样:

CREATE UNIQUE INDEX index_name ON tbl_name (title,store);
Run Code Online (Sandbox Code Playgroud)

您还必须删除您创建的两个不正确的唯一索引.

有关如何创建索引的更多详细信息,请参阅文档.