MySQL 儲存過程與事物

2022-02-18 05:39:43 字數 1555 閱讀 9483

一:儲存過程

儲存過程可以說是乙個記錄集吧,它是由一些t-sql語句組成的**塊,這些t-sql語句**像乙個方法一樣實現一些功能

儲存過程的好處

1.由於資料庫執行動作時,是先編譯後執行的。然而儲存過程是乙個編譯過的**塊,所以執行效率要比t-sql語句高。

2.乙個儲存過程在程式在網路中互動時可以替代大堆的t-sql語句,所以也能降低網路的通訊量,提高通訊速率。

3.通過儲存過程能夠使沒有許可權的使用者在控制之下間接地訪問資料庫,從而確保資料的安全。

二:事物

乙個事務是乙個連續的一組資料庫操作,就好像它是乙個單一的工作單元進行。換言之,永遠不會是完整的事務,除非該組內的每個單獨的操作是成功的。如果在事務的任何操作失敗,則整個事務將失敗。

事務的特性,事務有以下四個標準屬性的縮寫acid,通常被稱為:

原子性: 確保工作單元內的所有操作都成功完成,否則事務將被中止在故障點,和以前的操作將回滾到以前的狀態。

一致性: 確保資料庫正確地改變狀態後,成功提交的事務。

隔離性: 使事務操作彼此獨立的和透明的。

永續性: 確保提交的事務的結果或效果的系統出現故障的情況下仍然存在。

begin

declare result integer default 0;

-- 標記是否出錯

declare t_error integer default 0;

-- 如果出現sql異常,則將t_error設定為1後繼續執行後面的操作

declare continue handler for sqlexception set t_error=1;

-- 顯示的開啟事務,啟動它後,autocommit值會自動設定為0

start transaction;

insert into shop_invoicerecords (ordersjson,orderidjson,totalmoney,sourcedomain,userid ,invoicejson,auditingstate ,invoiceaddrssjson,adddate )values(_ordersjson,_orderidjson,_totalmoney,_sourcedomain,_userid,_invoicejson,_auditingstate,_invoiceaddrssjson,_adddate );

update shop_order set paymenttype=_paymenttype where sourcedomain=_sourcedomain and find_in_set(id,_orderid);

-- 標記被改變,表示事務應該回滾

if t_error=1 then

-- 事務回滾

rollback;

set result=-1;

else

-- 事務提交

commit;

set result=1;

end if;

select result;

end

MySql儲存過程與儲存函式

在開發過程種常常會重複使用某些sql語句,為此mysql sdsd 先建立乙個表 create table user insert user username,password values jacklove qqqqqq insert user username,password values u...

mysql儲存過程 MySQL儲存過程

在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...

mysql 儲存過程 mysql 儲存過程

建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...