mysql - 如果重复则中止插入

标签 mysql pdo

当且仅当 5 行都不存在时,我想在表中插入 5 行新行。如果其中之一在表中,那么我想中止插入(不更新任何内容),并知道哪一个(或哪些)已经存在。

我可以想出很长的方法来做到这一点(例如查看 SELECT col1 WHERE col1 IN (value1,value2,...) 是否返回任何内容,然后仅在没有返回时插入)

我也猜想交易可以做到这一点,但我目前正在学习它们是如何工作的。但是,我不知道交易是否可以告诉我哪个条目是重复的。

无论是否有事务,有没有办法仅通过一两个查询来完成此操作?

谢谢

最佳答案

我怀疑是否有比您提到的解决方案更好的方法:首先运行 SELECT 查询,如果它没有返回任何内容,则 INSERT。您通过一两个查询询问了某些内容。这正好是两个查询,在我看来非常有效。我想不出为此使用事务的有效方法。当您有多个 INSERTUPDATE 查询时,事务效果很好,而您只有一个查询。

关于mysql - 如果重复则中止插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30833515/

相关文章:

php - 获取受影响的行数,包括未更改的行数

php - 从点击的 div 的 ID 中获取值 - php mysql 问题

php - PDO 查询未在 PHP foreach 循环中返回结果

php - 如何将此查询转换为 SQL SERVER

mysql - 选择特定年份的所有行,以及受影响组的所有行

PHP PDO SQL 语法错误

pdo - 如何在 Codeigniter 中将属性设置为 PDO 连接

PHP MYSQL PDO 列的总和

php - 如何通过 PHP 表单使选择不区分重音?

mysql - 如何将 ruby​​ on Rails 应用程序导入到另一台计算机