1. 程式人生 > >MySQL中出現唯一索引衝突,使用ON DUPLICATE KEY UPDATE

MySQL中出現唯一索引衝突,使用ON DUPLICATE KEY UPDATE

        在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>

        參考地址:https://blog.csdn.net/plg17/article/details/78583692