4

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

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

2 回答 2

5

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

例如:

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

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

于 2012-06-27T21:41:22.620 回答
1

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

CREATE UNIQUE INDEX MyIndex ON column1

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

于 2012-06-27T21:45:43.230 回答