在进行数据操作的时候,经常会碰到这样的情况
插入多行数据(其中有几行可能是重复的),如果该记录不存在就插入,存在就无视。
使用一个for循环插入,如果不加检测,那么必将会触发约束问题。 想问问各位,当你们碰到插入约束问题的时候,是先select一遍检查是否存在,再选择是否执行insert,还是无脑insert无视产生的异常呢?
直接插,冲突就忽略。因为你事先检查后也不能确保插的时候不会冲突(好吧,很多时候你确实能够确保,比如当时只有你一个人在操作数据库)。有些方言也许会支持在冲突时干什么。
另外,批量插入用一条 insert
就可以了吧。
建议用replace into
可以参考的方法,来源于Google。
- mysql - 插入的时候带上ignore:http://www.yiibase.com/mysql/view/31.html
- oracle - 1、11g的新特性:http://www.askmaclean.com/archives/11g-新特性ignorerowondupkeyindex提示.html;2、merge插入:http://www.cnblogs.com/sunzhenxing19860608/archive/2010/10/19/1855823.html
- SQL server - 忽略重复插入的索引:http://www.it118.org/Specials/c9fba99e-4401-49cf-8256-ac3c1a34c0d9/5bf5f814-8a57-4a77-a607-709083cba0aa.htm
其中oracle的merge试过,其他两种没试过,仅供参考!