對於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...