mat*_*att 8 mysql sql insert on-duplicate-key
我明白存在INSERT IGNORE和INSERT ... ON DUPLICATE KEY UPDATE.但是,当存在重复键时,我想对INSERT临时表执行操作以保留已违反的唯一键的记录,以便我可以将其输出给用户.
有什么方法可以ON DUPLICATE INSERT吗?如果它有帮助,我正在尝试进行批量插入.
有了ON DUPLICATE KEY UPDATE,你不能插入另一个表 - 也没有可用的替代功能.
两种自定义/替代方法可以实现此目的:
使用stored procedure此问题的接受答案中概述的内容:MySQL ON DUPLICATE KEY插入审计或日志表
创建一个为您的表trigger记录INSERT到另一个表中的每个表,并查询表中充满"日志"的任何重复项.
类似的东西应该工作:
CREATE TABLE insert_logs (
id int not null
);
delimiter |
CREATE TRIGGER insert_logs_trigger BEFORE INSERT ON your_table
FOR EACH ROW BEGIN
INSERT INTO insert_logs SET id = NEW.id;
END;
|
Run Code Online (Sandbox Code Playgroud)
要获取表格中重复项的列表,您可以:
SELECT id FROM insert_logs HAVING COUNT(id) > 1 GROUP BY id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6282 次 |
| 最近记录: |