MySQL INSERT IGNORE无法正常工作

Hyd*_*erA 7 mysql insert duplicates

这是我的表格,里面有一些样本数据

a_id | b_id
------------
  1    225
  2    494
  3    589
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时

INSERT IGNORE INTO table_name (a_id, b_id) VALUES ('4', '230') ('2', '494')
Run Code Online (Sandbox Code Playgroud)

当它应该忽略第二个值对时,它会插入这些行(2,594)

没有定义索引,这些列都不是主列.

我不知道什么?

pax*_*blo 13

来自文档:

如果使用IGNORE关键字,则执行INSERT语句时发生的错误将被视为警告.例如,如果没有IGNORE,则复制表中现有UNIQUE索引或PRIMARY KEY值的行会导致重复键错误,并且语句将中止.使用IGNORE时,仍未插入行,但未发出错误.

(我的斜体).

您的行不会复制"现有的UNIQUE索引或PRIMARY KEY值",因为您没有主键也没有任何唯一约束.


如果您在其中一条评论中提到,您希望这两个字段都不是唯一的,但您确实希望组合是唯一的,则需要跨两列的复合主键(首先删除所有重复项):

alter table MYTABLE add primary key (a_id,b_id)
Run Code Online (Sandbox Code Playgroud)