如何使其不添加重复项?
我想通过ID旁边的所有其他列来检查。
我希望这是无效的。

ID    col1    col2   col3

1    first   middle  last


ID    col1     col2   col3

2    first   middle  last

我希望这是有效的。
ID    col1    col2   col3

1    first   middle  last


ID    col1     col2   col3

2    first    last   middle

最佳答案

您需要对所有三列使用复合唯一索引。请参阅以下示例表定义:

CREATE TABLE example (
    ID INT PRIMARY KEY AUTO_INCREMENT,
    col1 VARCHAR(32) NOT NULL,
    col2 VARCHAR(32) NOT NULL,
    col3 VARCHAR(32) NOT NULL,
    UNIQUE(col1, col2, col3)
);

-- expected to be valid
INSERT INTO example (ID, col1, col2, col3) VALUES
    (NULL, 'first', 'middle', 'last'),
    (NULL, 'first', 'last', 'middle');

-- expected to be invalid
INSERT INTO example (ID, col1, col2, col3) VALUES
    (NULL, 'first', 'middle', 'last'),
    (NULL, 'first', 'middle', 'last');

演示@SQL Fiddle

关于mysql - SQL不允许表中有重复记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22811577/

10-13 09:35