我想知道更换或插入语句的优点/缺点或做什么,以及更新或插入语句。
基本上,
做
dao.replaceEntry(entry);
而不是:
if(existing){
dao.insertEntry(entry);
} else {
dao.updateEntry(entry);
}
另外,调用dao.replaceEntry调用dao.insertOrUpdate是否会产生误导?
答案 0 :(得分:11)
我会做insertOrUpdate而不是replace。根据Mysql的文档
REPLACE与INSERT完全一样, 除非表中有一个旧行 与a的新行具有相同的值 PRIMARY KEY或UNIQUE索引,旧的 在新行之前删除行 插入
如果该行存在,则执行删除然后插入新行。更新是更好的方法,然后在REPLACE执行时删除和插入,即一次操作而不是两次。
我能想到的另一个问题是在数据库中有触发器或级联删除。在REPLACE的情况下,你会介意删除相关的行,因为REPLACE将首先删除,然后在具有相同ID的行已经存在时插入。