防止MySQL重复插入

时间:2012-06-27 21:39:48

标签: mysql

我有一个带有自动递增键的mysql表。如果表不包含我插入的行,我需要一种只插入该表的方法。 INSERT IGNORE和INSERT ON DUPLICATE KEY UPDATE将不起作用,因为自动递增的键将导致行始终不同。只有在没有重复行的情况下,我才能插入以下行的另一种方法是什么?感谢。

INSERT INTO TableName (column1, column2, column3) VALUES ("value1", "value2", "value3");

2 个答案:

答案 0 :(得分:5)

为您需要唯一的列或列组合设置UNIQUE约束。

例如:

ALTER TABLE `TableName`
ADD UNIQUE `constrain_me` (`column1`, `column2`);

如果要忽略重复插入可能给出的任何错误,请使用INSERT IGNORE,尽管您可能希望捕获此错误而不是在地毯下刷它。

答案 1 :(得分:1)

您可以在不希望重复的字段上创建唯一索引。

CREATE UNIQUE INDEX MyIndex ON column1

这样,如果添加了重复值,查询将会出错。还值得注意的是,此方法允许添加NULL值(即,具有NULL column1值的两行不会计为重复项)