想要插入一條數據,要避免重復插入,又不想折騰兩回數據庫連接操作,可以參考如下辦法。
dual是為了構建查詢語句而存在的表,Oracle中很常見,配合INSERT ... SELECT構建成我們需要的表,並指定了數據項.
EXISTS通過這個判斷是否存在的函數,就免去了我們做IF-ELSE的冗繁操作.
例:
@detail是要存入的內容,這里對內容進行了檢索,如果要這么做,最好對該字段做唯一約束,或加索引。
省掉了IF-ELSE,在iBatis配置一下就ok了,哈!
還有個更堅決的辦法——replace into:
replace INTO `taisau`.`RecordInfo`(`WorkID`,`bArtificialAttendance`,`fThreshold`,`Attendance_Time`,`PicPath`)\ select '%s','1','60.00','%d-%02d-%02d %02d:%02d:%02d.000','%s' from dual where not exists (SELECT `Attendance_Time` FROM `taisau`.`RecordInfo` WHERE `WorkID` = '%s' AND `Attendance_Time` = '%d-%02d-%02d %02d:%02d:%02d.000');
