捕捉主鍵衝突異常

第一種方法
    try {
            commonDao.insert(sql);
        } catch (Exception e) {
            if(e instanceof DuplicateKeyException){
                logger.warn(sql+"已經存在於["+dataSource+"]無需重複插入");
                return ;
            }else{
                logger.error("插入數據庫["+dataSource+"]數據失敗");
                throw e;
            }
第二種方法
使用INSERT IGNORE INTO tableName (字段) VALUES (值)
MySQL插入會直接忽略重複的值,但是需要確保sql語句沒有問題,否則依舊會報錯
一定要有主鍵或唯一索引,否則和INSERT INTO沒有區別.

注意:
當數據轉換引發報錯時,可以通過IGNORE關鍵字來忽略錯誤,這時MySQL會產生警告而不退出語句的執行,無效的數值會被調整成接近的數值並被插入。
例:如果表中rid字段 NOT NULL ,使用INSERT IGNORE 會忽略此類錯誤, 最終插入0.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章