当且仅当 5 行都不存在时,我想在表中插入 5 行新行。如果其中之一在表中,那么我想中止插入(不更新任何内容),并知道哪一个(或哪些)已经存在。
我可以想出很长的方法来做到这一点(例如查看 SELECT col1 WHERE col1 IN (value1,value2,...)
是否返回任何内容,然后仅在没有返回时插入)
我也猜想交易可以做到这一点,但我目前正在学习它们是如何工作的。但是,我不知道交易是否可以告诉我哪个条目是重复的。
无论是否有事务,有没有办法仅通过一两个查询来完成此操作?
谢谢
最佳答案
我怀疑是否有比您提到的解决方案更好的方法:首先运行 SELECT
查询,如果它没有返回任何内容,则 INSERT
。您通过一两个查询询问了某些内容。这正好是两个查询,在我看来非常有效。我想不出为此使用事务的有效方法。当您有多个 INSERT
或 UPDATE
查询时,事务效果很好,而您只有一个查询。
关于mysql - 如果重复则中止插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30833515/