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

ste*_*bot 1 java mysql sql

我想知道优点/缺点或做MySQL更换与做更新或插入语句是什么.

基本上,

dao.replaceEntry(entry);
Run Code Online (Sandbox Code Playgroud)

代替:

if(existing){
     dao.insertEntry(entry);
} else {
     dao.updateEntry(entry);
}
Run Code Online (Sandbox Code Playgroud)

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

Fai*_*roz 11

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

REPLACE与INSERT的工作方式完全相同,只是如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前删除旧行

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

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

  • +1当你有级联删除时,不要使用替换 - 有些人会以这种方式学习:p. (4认同)