我可以在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)附近使用正确的语法
答案 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)