我知道您可以在MySQL表中创建一个唯一的列,但我实际上是想比较两列。
所以,如果我有以下记录:
Time User Table
10:00pm Fred 29
11:00am Bob 33
我可以使用time 10:00pm
和table 33
但不是10:00pm table 29
插入新记录。
我知道我可以运行一个查询,然后如果我根据比较这两个字段获得该查询的结果,则无法插入新记录,但我想知道是否有更优雅的解决方案,我可以得到来自MySQL的INSERT重复输入错误,并保存了几行代码。
答案 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,...);