Laravel 中使用 insertOrIgnore 插入数据的时候重复的数据仍然会插入
- 在使用
insertOrIgnore插入数据的时候, 如果数据库中存在数据的话, 就不插入 - 但是我在使用
insertOrIgnore插入的时候, 仍然有重复的数据, 我这里重复的数据是除了主键不同, 其他的都相同
- 那么, 什么样的数据才算是重复的数据呢? 是除了主键不同, 其他的都相同的吗?
- 求指教下
关于 LearnKu
这个要根据你的数据库表有关系,默认主键 id 自增且唯一,所以会根据 id 判断是否重复,其他字段不在乎。也就是说只要 id 相同,就认为是存在数据,就不会插入新数据。
同理,如果数据表中有共有 5 个字段,其中 3 个字段定义的是唯一,那么将要插入的数据中只要这三个字段对应的值在数据库中都不存在,即使另外 2 个字段值相同,就会插入新数据。如果这 3 个唯一字段中,任何一个字段对应的值在数据表中存在,即使另外 2 个字段值不同,也不会插入数据。
底层 queryBuilder 转 SQL 后,使用的是 INSERT IGNORE 关键字,你可以查查相关语法。