📜  mysql 两列组合唯一 - SQL (1)

📅  最后修改于: 2023-12-03 15:17:46.749000             🧑  作者: Mango

MySQL 两列组合唯一

有时候我们需要通过两个或多个列的组合来确保一条记录的唯一性,MySQL 提供了多种方法来实现这个目的。本文将介绍两列组合唯一的实现方式,以及如何在 MySQL 中使用。

方法一:使用 UNIQUE 约束

在 MySQL 中,可以使用 UNIQUE 约束来确保一列或多列的唯一性。在创建表时,可以使用 UNIQUE 关键字和括号来定义多列的唯一组合。

CREATE TABLE my_table (
    column1 INT NOT NULL,
    column2 INT NOT NULL,
    UNIQUE (column1, column2)
);

当向 my_table 表中插入数据时,如果数据的 column1column2 组合已经存在,则会触发错误。为了避免错误的发生,可以使用 ON DUPLICATE KEY UPDATE 语句来更新已有记录,或者使用 IGNORE 关键字来忽略已有记录的插入。

INSERT INTO my_table (column1, column2, column3) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE column3 = VALUES(column3);

INSERT IGNORE INTO my_table (column1, column2, column3) VALUES (1, 2, 3);
方法二:创建联合主键

除了使用 UNIQUE 约束之外,还可以创建联合主键来确保多列的唯一性。联合主键指的是表中多个列的组合,这些列一起构成了主键。

CREATE TABLE my_table (
    column1 INT NOT NULL,
    column2 INT NOT NULL,
    column3 INT NOT NULL,
    PRIMARY KEY (column1, column2)
);

在这个例子中,column1column2 组合成了联合主键。如果一个记录的 column1column2 组合已经存在,则插入该记录将会触发错误。

与方法一类似,可以使用 ON DUPLICATE KEY UPDATEIGNORE 来更新或忽略已有记录的插入。

INSERT INTO my_table (column1, column2, column3) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE column3 = VALUES(column3);

INSERT IGNORE INTO my_table (column1, column2, column3) VALUES (1, 2, 3);
总结

本文介绍了两列组合唯一的实现方式,包括使用 UNIQUE 约束和创建联合主键。无论哪种实现方式,都能够确保多列的唯一性,可以根据实际需求选择适合的方式来实现。