SQL替换与执行插入或更新语句

时间:2010-09-20 14:52:00

标签: java sql mysql

我想知道更换或插入语句的优点/缺点或做什么,以及更新或插入语句。

基本上,

dao.replaceEntry(entry);

而不是:

if(existing){
     dao.insertEntry(entry);
} else {
     dao.updateEntry(entry);
}

另外,调用dao.replaceEntry调用dao.insertOrUpdate是否会产生误导?

1 个答案:

答案 0 :(得分:11)

我会做insertOrUpdate而不是replace。根据Mysql的文档

  

REPLACE与INSERT完全一样,   除非表中有一个旧行   与a的新行具有相同的值   PRIMARY KEY或UNIQUE索引,旧的   在新行之前删除行   插入

如果该行存在,则执行删除然后插入新行。更新是更好的方法,然后在REPLACE执行时删除和插入,即一次操作而不是两次。

我能想到的另一个问题是在数据库中有触发器或级联删除。在REPLACE的情况下,你会介意删除相关的行,因为REPLACE将首先删除,然后在具有相同ID的行已经存在时插入。