发出批量insert statement时,我们如何忽略(压制)DB和/或JDBC驱动程序抛出的异常?
假设我想批量插入一些用户,并且我有一个ID作为唯一键
INSERT INTO users
(id,name,age,email,pass_code)
VALUES
(1,'Mark',18,'mail@mail.com',123),
(2,'Zak',18,'mail@mail.com',123),
(3,'Djigi',18,'mail@mail.com',123),
(1,'James Petkov',18,'mail@mail.com',123), --Duplicated by id ?
(4,'Kinkinikin',18,'mail@mail.com',123),
(5,'A bula bula ',18,'mail@mail.com',123),
(6,'Shakazulo',18,'mail@mail.com',123);
如何告诉引擎MySQL / PostgreSQL继续插入剩余的记录?
SQL中是否支持此功能?
答案 0 :(得分:1)
在PostgreSQL中,您可以使用
忽略失败的行INSERT ... ON CONFLICT (id) DO NOTHING;
更通用的解决方案是分别运行每个INSERT
并忽略错误。