MySQL INSERT IGNORE Statement(插入忽略语句)|猿教程|在本教程中,您将学习如何使用MySQL INSERT IGNORE语句向表中插入数据。 MySQL INSERT IGNORE 语句介绍 当您使用INSERT语句向表中添加多行时,如果在处理过程中发生错误,MySQL将终止该语句并返回一个错误。因此,不会向表中插入任何行。 但是,如果使用INSERT IGNORE语句,则会忽略包含导致错误的无效数据的行,并将包含有效数据的行插入到表中。

在本教程中,您将学习如何使用MySQL INSERT IGNORE语句向表中插入数据。

MySQL INSERT IGNORE 语句介绍

当您使用INSERT语句向表中添加多行时,如果在处理过程中发生错误,MySQL将终止该语句并返回一个错误。因此,不会向表中插入任何行。

但是,如果使用INSERT IGNORE语句,则会忽略包含导致错误的无效数据的行,并将包含有效数据的行插入到表中。

INSERT IGNORE语句的语法如下:

INSERT IGNORE INTO table(column_list)
VALUES( value_list),
      ( value_list),
      ...

注意,IGNORE子句是MySQL对SQL标准的扩展。

MySQL 插入忽略示例

我们将为演示创建一个名为subscribers的新表。

CREATE TABLE subscribers (
    id INT PRIMARY KEY AUTO_INCREMENT,
    email VARCHAR(50) NOT NULL UNIQUE
);

UNIQUE约束确保在电子邮件列中不存在重复的电子邮件。

下面的语句将新行插入到subscribers表中:

INSERT INTO subscribers(email)
VALUES('john.doe@gmail.com');

正如预期的那样。 让我们执行另一个语句,将两行插入到subscribers表:

INSERT INTO subscribers(email)
VALUES('john.doe@gmail.com'), 
      ('jane.smith@ibm.com');

它返回一个错误。

Error Code: 1062. Duplicate entry 'john.doe@gmail.com' for key 'email'

正如错误消息中指出的,电子邮件john.doe@gmail.com违反了UNIQUE约束。

但是,如果使用INSERT IGNORE语句。

INSERT IGNORE INTO subscribers(email)
VALUES('john.doe@gmail.com'), 
      ('jane.smith@ibm.com');

MySQL返回一条消息,表明插入了一行,而忽略了另一行。

1 row(s) affected, 1 warning(s): 1062 Duplicate entry 'john.doe@gmail.com' for key 'email' Records: 2  Duplicates: 1  Warnings: 1

可以使用SHOW WARNINGS命令查看警告的详细信息,如下所示:

SHOW WARNINGS;

mysql guid 例子 mysql的ignore_插入数据

总之,当您使用INSERT IGNORE语句时,MySQL不会发出错误,而是在错误发生时发出警告。

如果您从subscribers表中查询数据,您将发现实际上只插入了一行,而导致错误的行没有被插入。

mysql guid 例子 mysql的ignore_MySQL_02