多列重复条目检查MySQL

多列重复条目检查MySQL,mysql,Mysql,我知道您可以在MySQL表中创建一个唯一的列,但实际上我想比较两个列 如果我有这样的记录: Time User Table 10:00pm Fred 29 11:00am Bob 33 我可以用时间10:00pm和表33插入新记录,但不能插入10:00pm表29 我知道我可以运行一个查询,然后在比较这两个字段的基础上,如果我从该查询中得到结果,就可以取消插入新记录的功能,但我想知道是否有一个更优雅的解决方案,可以在

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

如果我有这样的记录:

Time          User       Table
10:00pm       Fred       29
11:00am       Bob        33
我可以用
时间10:00pm
表33
插入新记录,但不能插入
10:00pm表29


我知道我可以运行一个查询,然后在比较这两个字段的基础上,如果我从该查询中得到结果,就可以取消插入新记录的功能,但我想知道是否有一个更优雅的解决方案,可以在插入时从MySQL获得重复条目错误,并为自己节省几行代码

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

ALTER TABLE your_table ADD UNIQUE(`Time`, `Table`);
CREATE UNIQUE INDEX idx_time_and_table ON reservations (`Time`, `Table`);

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

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

ALTER TABLE your_table ADD UNIQUE(`Time`, `Table`);
CREATE UNIQUE INDEX idx_time_and_table ON reservations (`Time`, `Table`);
如果两个值都不是
NULL
,这将阻止同一对的任何插入。具有
NULL
值侧会执行唯一性检查


您还将保留SQL关键字用于您可能要更改的列名。

基于您希望唯一的列创建唯一索引:

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

您实际上是在寻找多列约束。我希望我在2小时前就知道这些词。我用谷歌搜索了一下,在这个网站上得出了这个确切的结论。至少像我这样还没有弄明白的人现在会有一个匹配的查询。我的sql关键字在这个问题中被更改以保护无辜者。