資料庫事務操作

2021-10-07 19:21:26 字數 1684 閱讀 4829

事務:當執行一組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由於某種...