事務:當執行一組dml操作時,為了確保資料的完整性和一致性,避免資料庫產生錯誤資料,就需要通過事務(transaction)使該組dml操作同時成功或失敗
示例:
create table account(
id char(36) primary key,
card_id varchar(20) unique,
name varchar(8) not null,
money float(10,2) default 0
);set autocommit=0;
update account set money=money-100 where card_id='1234567890';#1
update account set money=money+100 where card_id='0987654321';#2
commit;
rollback;
select * from account
1、當執行第乙個dml sql語句時,事務開始,當出現以下情況時事務結束:
(1)執行了commit或rollback語句;
(2)執行了ddl語句(如建表語句)或dcl語句(如給使用者授權)
(3)資料庫客戶端程式退出或資料庫崩潰時,為了保持資料一致性,也會結束事務。
注意:執行dml語句且沒有結束事務時,如果需要查詢資料庫的真實改變情況,則要求在乙個新的sql window視窗中執行查詢語句
2、當乙個使用者執行dml語句時,如果其事物沒有結束,則受影響的行被鎖定,此時其它使用者不能改變受影響行中的資料,後面使用者所執行的dml語句會一直處於執行狀態,直至前乙個使用者所執行dml語句事務結束,例如:
在乙個sql window中執行如下sql語句,並且不執行事務結束語句
set autocommit = 0;
update student set name='小強' where id='0e0180a3-ec2f-4a72-b1ae-28d5f2be36ea';
然後再在乙個新的sql window中執行如下sql語句
set autocommit = 0;
delete from student where id='0e0180a3-ec2f-4a72-b1ae-28d5f2be36ea';
由於update語句執行後沒有結束事務,所以delete語句執行後一致處於執行狀態,當update語句的事務結束,則delete語句結束執行狀態。
原子性(atomicity):資料庫中原子性強調事務是乙個不可分割的整體,事務開始後所有操作要麼全部成功,要麼全部失敗,不可能停滯在中間某個環節。
一致性(consistency):事務必須使資料庫從乙個一致性狀態變換到另乙個一致性狀態,即乙個事務執行之前和執行之後都必須處於一致性狀態。
隔離性(isolation):當多個使用者併發訪問資料庫時,比如操作同一張表時,資料庫為每乙個使用者開啟的事務,不能被其他事務的操作所干擾,多個併發事務之間要相互隔離
永續性(durability):乙個事務一旦被提交,則對資料庫的所有更新將被儲存到資料庫中,不能回滾。
資料庫事務操作
1 先看看什麼是事務吧?對資料庫的每次操作都可以看做是事務。事務 transaction 是資料庫管理系統的執行單位,可以是乙個資料庫操作 如select操作 或者是一組操作序列。事務的特性 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durabi...
資料庫事務操作 資料庫事務隔離級別
參考文章 參考文章 對資料庫dml操作後,先寫入redo log,然後將資料讀到db buffer cache,這時候你查詢的是buffer cache裡面的內容,如果關閉當前視窗重新查詢,或者從其它視窗查詢,是沒有資料的.commit之後通過ckpt程序觸發checkpoint,呼叫dbwn將資料...
oracle資料庫事務併發操作
1 丟失資料修改 當兩個或多個事務選擇同一行,然後基於最初選定的值更新該行時,會發生丟失更新問題。每個事務都不知道其它事務的存在。最後的更新將重寫由其它事務所做的更新,這將導致資料丟失。2 讀 髒 資料 髒讀 讀 髒 資料是指事務t1修改某一資料,並將其寫回磁碟,事務t2讀取同一資料後,t1由於某種...