【发布时间】:2011-06-27 14:48:21
【问题描述】:
我想将数据唯一地插入到我的一个 MySQL 表中。也就是说,如果表中已经存在相同的条目(所有列包含相同的值),则应该取消插入操作。这可以通过定义唯一键并处理即将发生的错误来轻松完成,但我无法更改表结构。
我确信即使在没有唯一键的表中也有一种简单的方法可以捕捉到这一点。当然,我可以提前使用SELECT 语句手动检查此类记录的存在,但同时可能存在修改我的表的并发实例(在使用SELECT 的检查和实际的INSERT 之间)。
我想在一个 SQL 命令中执行检查和INSERT 操作。谁能指出我正确的方向?
【问题讨论】:
-
您在表中使用键吗?您可以使用“插入重复键”。 dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
-
@Tim 这需要唯一的密钥,而@Björn Marschollek 说他不能添加这样的密钥。
-
为什么不能改变表格,这是最好的方法。任何其他方式都是一种黑客攻击,如果在获得锁定之后运行查询期间发生了一些不好的事情并且没有释放锁定,那么没有其他东西可以插入它。