【问题标题】:Preventing MySQL double insert防止 MySQL 双重插入
【发布时间】:2013-03-23 18:23:11
【问题描述】:

我有一张或多或少有点像的桌子

Name | Lastname | ID | Date 

如果NameLastnameID 这样的人已经存在而不运行其他查询来搜索他,有没有办法阻止数据库运行插入函数?

【问题讨论】:

    标签: php mysql sql schema


    【解决方案1】:

    在列上添加UNIQUE 约束,

    ALTER TABLE TableName ADD CONSTRAINT tb_uq UNIQUE (ID, LastName)
    

    一旦实现,如果你尝试插入一个ID和LastName已经存在的值,它会抛出一个异常。例子

    INSERT INTO tableName (ID, LASTNAME) VALUES (1, 'hello') // ok
    INSERT INTO tableName (ID, LASTNAME) VALUES (2, 'hello') // ok
    INSERT INTO tableName (ID, LASTNAME) VALUES (1, 'hello') // failed
    

    【讨论】:

    • 似乎正是我所需要的!谢谢!
    • 如果您希望查询正常失败,您还可以添加进一步的子句“ON DUPLICATE KEY UPDATE ID = ID;”最后。
    • 我倾向于让它不优雅地失败,以便您可以在应用程序中处理它,但又完全取决于用户的意图
    • @Simonatmso.net 是的,这完全取决于用户:)
    猜你喜欢
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 2015-08-07
    • 2016-02-19
    相关资源
    最近更新 更多