mysql事物巢狀說明

2021-08-07 12:30:55 字數 959 閱讀 6830

對於mysql的事物巢狀,個人感覺是乙個很危險的事情,舉例:

mysql> 

select

* from

test;  

+------+

| id |  

+------+

|    1 |  

+------+

1 row in

set(0.00 sec)  

mysql> start transaction

;  query ok, 0 rows

affected (0.00 sec)  

mysql> insert

into

test

values

(2);  

query ok, 1 row affected (0.00 sec)  

mysql> start transaction

;  query ok, 0 rows

affected (0.00 sec)  

mysql> insert

into

test

values

(3);  

query ok, 1 row affected (0.00 sec)  

mysql> commit

-> ;  

query ok, 0 rows

affected (0.00 sec)  

mysql> rollback

;  query ok, 0 

rows

affected (0.00 sec) 

上面是乙個簡單的事物巢狀,當事物成功後,假如外層事物失敗了,按程式設計師的角度來說第乙個插入應該會失敗,但是不是這樣的,當子事物提交時其實第乙個插入就被提交了,所以後面的外層回滾不會對他產生作用;

一般用事物是最好把你的業務分層幾個邏輯塊,每一塊用乙個事物,盡量不要使用事物巢狀;;;

關於mysql裡面的事物 mysql 事物

mysql之事物詳解 一 事務定義 事務 乙個最小的不可再分的工作單元 通常乙個事務對應乙個完整的業務 例如銀行賬戶轉賬業務,該業務就是乙個最小的工作單元 乙個完整的業務需要批量的dml insert update delete 語句共同聯合完成 事務只和dml語句有關,或者說dml語句才有事務。這...

spring 中事物的說明

業務方法需要在乙個事物中執行,如果方法執行時,已經存在乙個事物中,那麼加入該事物,否則為自己建立乙個新事物。transactional propagation propagation.required public void test1 宣告方法不需要事務,如果方法沒有關聯到乙個事務,容器不會為它開...

spring事物傳播行為說明

spring在transactiondefinition介面中規定了7種型別的事務傳播行為,規定了事務方法和事務方法發生巢狀呼叫時事務如何進行傳播。種類說明 propagation required 如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。pro...