多列重复条目检查MySQL

时间:2012-01-20 19:45:01

标签: mysql

我知道您可以在MySQL表中创建一个唯一的列,但我实际上是想比较两列。

所以,如果我有以下记录:

Time          User       Table
10:00pm       Fred       29
11:00am       Bob        33

我可以使用time 10:00pmtable 33但不是10:00pm table 29插入新记录。

我知道我可以运行一个查询,然后如果我根据比较这两个字段获得该查询的结果,则无法插入新记录,但我想知道是否有更优雅的解决方案,我可以得到来自MySQL的INSERT重复输入错误,并保存了几行代码。

3 个答案:

答案 0 :(得分:3)

尝试在两列中使用复合唯一约束:

ALTER TABLE your_table ADD UNIQUE(`Time`, `Table`);

现在任何尝试添加具有匹配值的行都会强制MySQL抛出错误,您可以在应用中测试该错误。

答案 1 :(得分:3)

您可以创建一个包含两列的唯一索引:

CREATE UNIQUE INDEX idx_time_and_table ON reservations (`Time`, `Table`);

如果两个值都不是NULL,这将阻止同一配对的任何插入。具有NULL值的一步可以进行唯一检查。

您还可以使用保留的SQL关键字作为您可能想要更改的列名。

答案 2 :(得分:2)

根据您想要唯一的列创建唯一索引:

CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...);