事務:數據庫執行事件的最小單元(打開SQL PLUS 相當於一個事務開始了)
A:原子性 C:一致性(事務執行前後一致) I:獨立性 D:持久性
撤銷DML事務處理
可撤銷語句:所有dml語句(insert,update,delete)
ddl,dcl等都不可以撤銷
能寫在事務中的語句只有select和DML語句
因爲如果出現非DML並且不是select,之前的操作就會被提交,不可撤銷(例:創建下一個table時,前一個table就會被提交,因爲create不是DML語句)
執行事務時如果沒有非DML語句執行,關閉頁面時因爲沒有提交,此事務所作的操作不會保留,要保留用commit;語句。
沒有提交的事務,別人看不到(除當前事務外)
savepoint a; 設保存點,a爲保存點
回滾操作:
rollback; 撤消之前事務所做的操作
rollback to a;
commit; 提交當前所做修改,之後不可回滾
select * from shangpin
where name='白酒1'
for update; 給where語句相關的資源加鎖
當一個事務給字段加鎖後,其他事務不能對它進行訪問。
死鎖的例子:兩個事務都要對A和B進行操作,一個先縮A,另一個先鎖B,然後再鎖另外一個時會出現死鎖的現象
但SQL遇見死鎖時會強制進行處理,讓一個事務退出。