防止 MySQL 双重插入

Posted

技术标签:

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

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

Name | Lastname | ID | Date 

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

【问题讨论】:

【参考方案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 是的,这完全取决于用户:) @Simonatmso.net What is the purpose of CONSTRAINT naming

以上是关于防止 MySQL 双重插入的主要内容,如果未能解决你的问题,请参考以下文章

mysql 插入数据如何防止重复

MySQL防止重复插入相同记录

防止数组中的双重条目[重复]

无法防止双重输入 c# listview

php 用双重循环出现重复值

HTML 防止双重提交