📜  SQL |插入忽略语句

📅  最后修改于: 2022-05-13 01:54:55.702000             🧑  作者: Mango

SQL |插入忽略语句

我们知道表的主键不能重复。例如,学生表中学生的卷号必须始终是不同的。同样,EmployeeID 在员工表中应该是唯一的。当我们尝试将元组插入到主键重复的表中时,会导致错误。但是,使用 INSERT IGNORE 语句,我们可以防止弹出此类错误,尤其是在批量插入条目时,此类错误会中断插入流程。相反,只会生成警告。

INSERT IGNORE 避免错误的情况

  • 在插入重复键时,列必须包含 PRIMARY KEY 或 UNIQUE 约束
  • 在列具有 NOT NULL 约束的情况下插入 NULL 值。
  • 在将行插入分区表时,插入的值与分区格式不符。

例子:

假设我们有一个关系,员工。

员工表:

EmployeeIDNameCity
15001AakashDelhi
15003SahilBangalore
15010JohnHyderabad
15008ShelleyDelhi
15002AnanyaMumbai
15004SiaPune

我们可以注意到,条目没有根据它们的主键(即 EmployeeID)进行排序。

示例查询:

INSERT IGNORE INTO Employee (EmployeeID, Name, City)
VALUES (15002, 'Ram', 'Mumbai');

输出:
没有插入条目。

示例查询:

插入多条记录

一次插入多条记录时,任何不能插入的都不会,但可以插入的将是:

INSERT IGNORE INTO Employee (EmployeeID, Name, City)
VALUES (15007, 'Shikha', 'Delhi'), (15002, 'Ram', 'Mumbai'), (15009, 'Sam', 'Ahmedabad');

输出:
第一个和最后一个条目被插入;中间条目被简单地忽略。没有错误闪烁。

坏处

大多数用户不喜欢 INSERT IGNORE 而不是 INSERT,因为有些错误可能会被忽视。这可能会导致表中的不一致,从而导致在用户没有机会更正它们的情况下无法插入一些元组。因此,INSERT IGNORE 必须在非常具体的条件下使用。