PL/SQL更改資料和管理事務
1 原子性 最小的執行單位
2 一致性 要麼就是開始狀態,要麼是最終狀態,沒有中間狀態
3 隔離性 外部看不到事務的內部細節
4 常見性 事務成功會儲存下來,其他事情影響不到
事務的生命週期
1事務自動開始,第一行SQL或者上一個事務完成後自動啟動下一個事務
2什麼時候結束?提交(commit)或者回滾(rollback)
3 DDL語言 屬於自動提交 create alter drop truncate
4部分回滾 savepoint設定儲存點,只回滾到儲存點。
鎖 資料庫系統通過一種機制,用來保障資料的安全可靠
分類1:內部鎖(Oracle內部的事情) DDL鎖 DML鎖
分類2:S 全表只讀鎖 樂觀鎖 X 全表排他鎖 悲觀鎖 RS 行級只讀鎖 RX 行級排他鎖 SRX 全表只讀行級排他鎖
S 全表只讀鎖share 樂觀鎖 只有當前會話能操作該表,其他會話只能用(select)此表,不能做增刪改行為
create table XXX(......)
X 全表排他鎖exclusive 悲觀鎖 獨佔鎖 只有當前會話能操作該表,其他會話不能讀寫,必須等
alter table XXX ddd 列名 資料型別 ;如果資料量非常大,加約束將會導致操作時間變得很長
RS 行級只讀鎖row share 只有當前會話能操作該表,其他會話可以操作(增刪改查)其他記錄或者讀取(select)這幾條記錄
update delete where 符號條件的列將會被鎖定只讀 其他會話查詢到這幾條記錄增刪改前的記錄
整張表的記錄全表被鎖定 還是隻能算行級鎖
RX 行級排他鎖row exclusive 只有當前會話能操作這幾條記錄,其他會話可以操作(增刪改查)其他記錄。
insert 表名(欄位名) values(值); 被插入的記錄是排他鎖鎖定的,其他會話不能查詢到這幾條記錄
SRX 全表只讀行級排他鎖share row exclusive 只有當前會話可以操作這幾條記錄,其他會話可以讀取讀取(select)其他記錄。
分類3:行級鎖 表級鎖 資料庫級鎖
selecr * from 表名
where 條件 for update
行級只讀鎖