ON DUPLICATE KEY:多列唯一约束

时间:2011-07-31 12:51:56

标签: mysql database

现在我有:

INSERT INTO mytable (a,b,c,d) VALUES(1,2,3,4)
  ON DUPLICATE KEY UPDATE c=VALUES(c),d=VALUES(d)

如果abUNIQUE个密钥...

,则有效

但是现在我只想在表中不存在另一对(a,b)的行时更新UPDATE(否则跳过插入)。

基本上(a,b)应该是独一无二的,而不是(a)(b),但两者都已连接。

例如,这些行有效

ID (auto-inc) | a | b |  c  | d
            0 | 5 | 1 | 343 |466
            1 | 5 | 2 | 363 |466
            2 | 5 | 3 | 343 |496
            3 | 7 | 1 | 343 |496

因为5,15,25.37.1等等。

但是这里的第2行应该被认为是第1行的副本,所以第1行应该更新:

ID (auto-inc) | a | b |  c  | d
            0 | 5 | 1 | 343 |466
            1 | 5 | 1 | 363 |466
            2 | 5 | 3 | 343 |496
            3 | 7 | 1 | 343 |496

这可能吗?

3 个答案:

答案 0 :(得分:13)

UNIQUE KEY改为(a,b)而不是b

ALTER TABLE tblname ADD UNIQUE (a,b)

答案 1 :(得分:1)

CREATE UNIQUE INDEX index_unique_on_a_and_b ON mytable (a,b)

答案 2 :(得分:1)

值得注意的是,如果在表中有数据时尝试添加ADD UNIQUE(a,b),则可能会出现重复键错误。清空表,添加唯一索引,它将起作用。