MySQL資料庫事務管理與儲存過程

2021-07-27 06:55:09 字數 2433 閱讀 5066

1.什麼叫做事務?

一件事(務)中包含多個操作,在計算機中是指資料庫的一組操作,由一條或者多條sql語句組成。

2.事務的作用:

避免誤操作。

3.事務規則:

要麼都執行成功,要麼都執行不成功,即同時執行成功,同時不執行成功。

例如:銀行轉賬:轉入和轉出操作語句必須保證都執行成功,只要其中有乙個執行不成功,就會全部執行不成功,這也保證了銀行轉賬時的安全性。

4.事務管理包含2部分內容:

(1)開始事務:

start transaction;

(2)事務處理

事務處理包含2種:事務提交(commit;)和事務回滾(rollback;)。

sql語句在開始事務和處理事務之間:

例如:start transaction;

sql語句...

commit;

5.事務的4個特性:

一致性:保證資料一致完整性的操作,誤操作的事務會進行事務回滾(違反約束的資料操作)。

原子性:要麼都執行成功,要麼都不執行成功。

永續性:事務提交成功之後,修改的資料就會儲存的在資料庫中,哪怕資料庫出現問題(邏輯問題)。

隔離性:每個事務都應該是同時操作的,不管是否在併發的狀態(多個使用者同時訪問資料庫,每個使用者開啟的事務都不能被其他使用者的操作影響)。

6.事務的隔離等級:4種,如下表(4種隔離等級分別會產生的問題),mysql預設repeatable read(可重讀)隔離等級。

設定事務隔離等級:set session transaction isolation level 隔離等級;

1.儲存過程定義位置:定義在資料庫中

2.儲存過程作用:提高sql**的重用性。

3.建立儲存過程的語法:

create procedure 自定義名(引數)

begin

待執行的sql...

end;

另:在dos命令下建立儲存過程,需要按如下方式建立:

delimiter //:作用是將;(分號)轉義為普通字元,使得//(雙斜線)代替;(分號)的結束作用。

delimiter ;:作用是恢復;(分號)的預設的結束作用。

call two():表示執行儲存過程two()(也稱為函式two())。

4.儲存過程的引數型別:3種:in,out,inout

in:表示輸入型別,從外部提供給儲存過程使用的引數。

out:表示輸入型別,儲存過程內部使用的引數。

inout:可以輸入也可以輸出型別。

引數定義語法:

引數型別 自定義引數名 資料型別

例如:

使用in作為引數型別:

use firstdb;

create procedure three(in num char)

begin

select * from users111 where ***=num;

end;

執行儲存過程:call three('女');

使用out作為引數型別:out型別的引數不接受傳值,預設為null,只能在儲存過程**中設定它的值,外部不能設定它的值:

create procedure four(in num char,out num1 varchar(20))

begin

select name into num1 from users111 where ***=num;

end;

執行:call four('女',@num1);

select @num1;

select 列名 into 變數名:表示將查詢結果賦值給變數。

@num1:用作接收儲存過程賦值給變數的值,是乙個變數。

create procedure three(in num char,out num1 varchar(20),out num2 int)

begin

select name into num1 from users111 where ***=num;

set num2=30;-- 設定值

end;

執行:call three('女',@num1,@num2);

select @num2;

MySQL資料庫之事務管理

4.事務的隔離級別 二 事務的操作 2.案例演示 1.模擬生活 生活中往往出現這樣一種場景,一件事情中包含多個任務,只有多個任務同時完成事務才能辦成,否則只要有乙個任務失敗,整件事情失敗。如公司的運營,所有員工共同配合 2.事務的定義 資料庫事務 transaction 是訪問並可能操作各種資料項的...

MySQL資料庫的事務管理

當前在開發erp系統,使用到的資料庫為mysql。下面介紹下如何開啟事務,以及事務隔離的機制 1.檢查當前資料庫使用的儲存引擎。2.修改前my.ini中的檔案如下 3.修改my.ini的檔案如下。3.1 修改了預設的儲存引擎 3.2 增加了mysql資料庫的事務隔離級別,如果不新增預設是repeat...

資料庫事務管理

一 事務的特性 acid 二 3個問題 幻讀和不可重複讀看起來一樣,但鎖的機制不同,幻讀對應insert和delete 操作,不可重複讀對應update操作 具體說就是不可重複讀鎖定一行資料,是行鎖,幻讀鎖定整個條件區域,是序列鎖。三 樂觀鎖和悲觀所 以上說的鎖,通過資料庫的鎖機制控制,鎖定後其他操...