mysql - Laravel InsertOrIgnore - 插入了哪些记录?
问题描述
在 Laravel InsertOrIgnore 调用中,或者更广泛地说,原始 MySQL Insert 或 Ignore 调用中,有没有办法在调用后判断哪些插入的记录成功,哪些插入失败?
例如,以这个查询为例,该查询被插入到表“trackings”中,该表具有 user_id 和 project_id 作为组合主键。假设我们已经在 db 中有值:
user_id: 1001, project_id:99
user_id: 1233, project_id:99
所以下面代码中的前两个插入将被忽略
insert ignore into `trackings`
(`user_id`, `project_id`, `dollarvalue`, `dateAdded`, `flags`) values
(1001, 99, '3.00', '2021-03-27 03:19:10', 'e'), /* DUPE */
(1233, 99, '3.00', '2021-03-27 03:19:10', 'e'), /* DUPE */
(192, 97, '2.50', '2021-03-27 03:19:10', 'e'),
(9984, 99,* '3.00', '2021-03-27 03:19:10', 'e'),
(9, 99, '3.00', '2021-03-27 03:19:10', 'e')
有没有办法获取已插入或相反未插入的记录列表?需要明确的是,我寻找的不仅仅是一个 COUNT,我需要知道插入的记录和被忽略的记录的标识符(即上面示例中的 user_id 和 project_id)。我还希望能够执行“批量InsertIgnore” - 即一次 InsertIgnoring SEVERAL 行,而不是一次循环并检查结果 1 行,这对我的用例来说是不可行的(我们要插入数千行一次)
解决方案
推荐阅读
- python - msys: pip install cffi 由于未定义的引用而失败
- session - 微服务会话管理
- mysql - Select * vs Select count(*),哪个算行更快?
- javascript - 是否可以在没有输入文件的情况下运行汇总插件(在多捆绑实例中)?
- laravel - 筛选库存中可用的产品
- android - React-Native Android ScrollView 无法从 onScroll 获取事件
- angular - Angular Formbuilder 必须在验证器中包含某些字符
- c++ - 在单行代码中理解 index++
- asp.net-core - How to keep integration test running to catch hangfire trigger?
- ios - Xcode Simulator 加载应用程序然后变黑