我可以在MySQL触发器中使用“INSERT INTO WHERE NOT EXISTS”来避免插入重复记录吗?

时间:2017-07-19 15:24:08

标签: mysql sql triggers insert duplicates

我可以在MySQL触发器中使用“INSERT INTO WHERE NOT EXISTS”来避免插入重复记录,例如 -

INSERT INTO `user` (`id`, `name`) VALUES (1, 'John') WHERE NOT EXISTS (SELECT * FROM `user` WHERE `id` = 1);

当我在MySQL触发器中使用这个句子时,我收到错误提示并且无法创建触发器。

错误代码:1064 您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在第6行的'WHERE NOT EXISTS(SELECT * FROM user WHERE id = 1)附近使用正确的语法

2 个答案:

答案 0 :(得分:1)

您可以使用IGNORE

INSERT IGNORE `user` (`id`, `name`) VALUES (1, 'John')

如果该行已存在,则不会插入也不会抛出错误。

您必须知道它是基于(表格的)密钥才能知道它是否重复。

答案 1 :(得分:1)

试试这个

INSERT INTO `user` (`id`, `name`) SELECT 1, 'John' FROM dual WHERE NOT EXISTS (SELECT 1 FROM `user` WHERE `id` = 1)