【问题标题】:Can I use "INSERT INTO WHERE NOT EXISTS" in MySQL triggers to avoid inserting duplicate records?我可以在 MySQL 触发器中使用“INSERT INTO WHERE NOT EXISTS”来避免插入重复记录吗?
【发布时间】:2017-12-24 23:31:46
【问题描述】:

能否在 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) 附近使用正确的语法

【问题讨论】:

    标签: mysql sql triggers insert duplicates


    【解决方案1】:

    你可以使用IGNORE:

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

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

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

    【讨论】:

    • 非常感谢!它完美地解决了我的问题。
    【解决方案2】:

    试试这个

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

    【讨论】:

    • 非常感谢!这也是解决我问题的好方法。
    猜你喜欢
    • 2019-07-29
    • 1970-01-01
    • 2012-03-02
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多