MySQL中出現唯一索引衝突,使用ON DUPLICATE KEY UPDATE
阿新 • • 發佈:2019-01-13
在MySQL資料庫中,如果在insert語句後面帶上ON DUPLICATE KEY UPDATE 子句,而要插入的行與表中現有記錄的惟一索引或主鍵中產生重複值,那麼就會發生舊行的更新;如果插入的行資料與現有表中記錄的唯一索引或者主鍵不重複,則執行新紀錄插入操作。
現在有一張表,其擁有一個唯一索引的EMPLOYEE_ID欄位,那麼在其它insert語句中,插入的EMPLOYEE_ID值已經在表中擁有,那麼可以使用ON DUPLICATE KEY UPDATE 子句 來更新已有EMPLOYEE_ID的那條記錄。
如果需要使用最新傳遞的值,可以用Mybatis的VALUES( 資料庫欄位 ) 來設定。
<insert id="saveEntity"> INSERT INTO t_table ( SOCIAL_NO, HOUSE_FUND_ACCOUNT, EMPLOYEE_ID, CREATE_DATE, CREATE_USER_ID, UPDATE_DATE, UPDATE_USER_ID ) VALUES ( #{socialAccount}, #{houseFundAccount}, #{employeeId}, now(), #{createdUserId}, now(), #{createdUserId} ) ON DUPLICATE KEY UPDATE SOCIAL_NO = VALUES(SOCIAL_NO), HOUSE_FUND_ACCOUNT = VALUES(HOUSE_FUND_ACCOUNT), EMPLOYEE_ID = VALUES(EMPLOYEE_ID), UPDATE_DATE = now(), UPDATE_USER_ID = VALUES(UPDATE_USER_ID) </insert>