在我生活的世界中,构建一个将所有飞镖都扔到墙上的解决方案,并希望其中一些能命中靶心是一种非常糟糕的解决方案方法。
那么,我的问题出现了,什么时候在约定可接受的生产系统中使用 INSERT IGNORE
?
我想写一个 TRIGGER
(参见 #17353080)来搜索现有数据,如果找不到,则将其INSERTed
。建议使用 INSERT IGNORE
并依赖唯一字段的 primary keying
。
所以,我有一个困境:
- 我是否使用
INSERT IGNORE
并依赖于primary keying
我想保持唯一性的字段,使任何重复的 INSERT 失败 - 我是否重复查询目标表以检查是否存在我想保持唯一性的字段值,如果不存在则
INSERT
?
由于这些问题在这个特定的媒体中太模糊了,我想了解什么时候可以按照惯例使用 INSERT IGNORE,我可以根据我的具体情况做出自己的判断。
谢谢,
马特
元:
我认为,因为 conventions
是一个描述为的现有标签:
A generic tag covering any accepted method of doing things, which could include naming, spacing, coding, commenting, etc.
这种类型的问题是可以接受的。
最佳答案
从逻辑上讲,我会说这取决于您在失败时需要做什么。
如果您只是执行批量插入并且不关心该值是否已经在表中 - 只要它保持唯一 - 那么 INSERT IGNORE
是明智的。顾名思义,您乐于忽略任何未插入的内容。
如果您需要对失败的插入执行某些操作,例如建议您的用户,则有必要执行单独的检查。
然而,最重要的问题是:“为什么值已经在表中了?”
关于mysql - 什么时候使用 INSERT IGNORE 好习惯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17382339/