2010-09-20 65 views
1

我想知道什么是优势/缺点,或者做一个MySQL替换与做更新或插入语句。SQL替换与做插入或更新语句

基本上,

dao.replaceEntry(entry); 

代替:

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

而且,岂不是误导拨打电话dao.replaceEntry dao.insertOrUpdate?

回答

11

我会做insertOrUpdate而不是替换。按MySQL的文档

更换作品酷似INSERT, 不同之处在于,如果一个老行的表 具有相同的值作为一个 主键或唯一索引的新行,老 行在新行之前删除 插入

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

我能想到的另一个问题是触发器或级联删除在数据库中。就REPLACE而言,由于REPLACE将首先删除相关行,并且如果具有相同ID的行已存在,则插入相关行。

+4

+1当你有层叠式删除时,千万不要使用替换 - 有些人会以困难的方式学习:p。 – wimvds 2010-09-20 15:51:59