2017-07-19 82 views
0

我可以使用「INSERT INTO WHERE NOT EXISTS」在MySQL觸發,以避免插入重複記錄,例如 -我可以在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服務器版本正確的語法使用近「WHERE NOT EXISTS手冊(SELECT * FROM user WHERE id = 1),第6行

回答

1

您可以使用IGNORE

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

如果行已經存在,它不會插入也不會拋出錯誤。

你必須知道它是基於(表的)關鍵字來知道它是否是重複的。

+0

非常感謝您!它完美地解決了我的問題。 – Benson

1

試試這個

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

+0

非常感謝!這也是解決我的問題的好方法。 – Benson

相關問題