當你在資料庫插入大量陳述句后,突然其中一句報錯,rollback大量資料的效率極低,如何解決?
一:我們在這里提出一個事務“保存點”的概念
那什么是保存點?粗略來講相當于Java中的“斷點”,設定一個斷點,當你在資料庫中插入一條資料后,在這條陳述句后面設定一個savepoint,當你需要rollback的時候,只需要回滾到這個savepoint點時就可以,這樣就節省了大量的時間,提高的作業效率,也不需要消耗資料庫的資源,
二:代碼演示
我的資料庫表有cid cname pif 三個屬性,用sql陳述句插入
- 首先開啟事務
START TRANSACTION;
INSERT into city VALUES(NULL,"武漢市","7");
插入成功后,我們在這設定一個保存點a
SAVEPOINT a;
INSERT into city VALUES(NULL,"北京市","8");
插入成功后,我們在這設定一個保存點b
SAVEPOINT b;
INSERT into city VALUES("南京市","9");
這邊sql陳述句出現錯誤
INSERT into city VALUES("南京市","9")
> 1136 - Column count doesn't match value count at row 1
> 時間: 0s
5.這邊我們用保存點進行回滾
rollback to SAVEPOINT a;
回滾到a成功
rollback to SAVEPOINT a
> OK
> 時間: 0s
在插入大量資料中間發生錯誤需要回滾,就可以利用保存點的方法來有效的解決此類問題,希望對你們有幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/246909.html
標籤:其他
