真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql觸發(fā)器怎么回滾 mysql自動(dòng)回滾

mysql 多條語句,怎么判斷其中一條執(zhí)行錯(cuò)誤,就執(zhí)行回滾

寫一個(gè)存儲(chǔ)過程,在存儲(chǔ)過程里寫一個(gè)事物,再把你要的mysql 多條語句寫在事物里面就行了,要用的時(shí)候調(diào)用一下存儲(chǔ)過程.大致格式是這樣的:

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、陽江網(wǎng)絡(luò)推廣、小程序制作、陽江網(wǎng)絡(luò)營(yíng)銷、陽江企業(yè)策劃、陽江品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供陽江建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com

drop procedure if exists accessCount;

delimiter $

create procedure accessCount()

BEGIN

DECLARE t_error INTEGER DEFAULT 0;/*設(shè)置錯(cuò)誤增量*/

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;

START TRANSACTION;/*開啟事物*/

xxxx(你的語句)

IF t_error = 1 THEN /*執(zhí)行失敗回滾*/

ROLLBACK;

ELSE

COMMIT;

END IF;

end $

delimiter ;

觸發(fā)器中執(zhí)行回滾SQL SERVER2000,,,高分

如果 @@TRANCOUNT 的值在存儲(chǔ)過程完成時(shí)與過程執(zhí)行時(shí)不同,則會(huì)生成一個(gè) 266 信息類錯(cuò)誤。該錯(cuò)誤不是由觸發(fā)器中同一個(gè)條件生成的。

當(dāng)調(diào)用存儲(chǔ)過程時(shí),如果 @@TRANCOUNT 為 1 或更大,并且該過程執(zhí)行 ROLLBACK TRANSACTION 或 ROLLBACK WORK 語句,則會(huì)產(chǎn)生 266 號(hào)錯(cuò)誤。這是因?yàn)?ROLLBACK 回滾所有未完成的事務(wù),并將 @@TRANCOUNT 減到 0,該值比調(diào)用過程時(shí)要小。

如果在觸發(fā)器中發(fā)出 ROLLBACK TRANSACTION:

◆對(duì)當(dāng)前事務(wù)中的那一點(diǎn)所做的所有數(shù)據(jù)修改都將回滾,包括觸發(fā)器所做的修改。

◆觸發(fā)器繼續(xù)執(zhí)行 ROLLBACK 語句之后的所有其余語句。如果這些語句中的任意語句修改數(shù)據(jù),則不回滾這些修改。執(zhí)行其余的語句不會(huì)激發(fā)嵌套觸發(fā)器。

◆在批處理中,所有位于激發(fā)觸發(fā)器的語句之后的語句都不被執(zhí)行。

◆觸發(fā)器中的 ROLLBACK 關(guān)閉并釋放所有在包含激發(fā)觸發(fā)器的語句的批處理中聲明和打開的游標(biāo)。這其中包括了在激發(fā)觸發(fā)器的批處理所調(diào)用的存儲(chǔ)過程中聲明和打開的游標(biāo)。在激發(fā)觸發(fā)器的批處理之前的批處理中所聲明的游標(biāo)將只是關(guān)閉,但是在以下條件下,STATIC 或 INSENSITIVE 游標(biāo)不關(guān)閉:

·CURSOR_CLOSE_ON_COMMIT 設(shè)置為OFF。

·靜態(tài)游標(biāo)要么是同步游標(biāo),要么是完全填充的異步游標(biāo)。

當(dāng)執(zhí)行觸發(fā)器時(shí),觸發(fā)器的操作總是好像有一個(gè)未完成的事務(wù)在起作用。如果激發(fā)觸發(fā)器的語句是在隱性或顯式事務(wù)中,則肯定會(huì)這樣。在自動(dòng)提交模式下,也是如此。當(dāng)語句開始以自動(dòng)提交模式執(zhí)行時(shí),如果遇到錯(cuò)誤,則會(huì)有隱含的 BEGIN TRANSACTION 語句允許恢復(fù)該語句生成的所有修改。該隱含的事務(wù)對(duì)批處理中的其它語句沒有影響,因?yàn)楫?dāng)語句完成時(shí),該事務(wù)要么提交,要么回滾。但是,當(dāng)調(diào)用觸發(fā)器時(shí),該隱含的事務(wù)將仍然有效。

這意味著,只要觸發(fā)器中發(fā)出 BEGIN TRANSACTION 語句,則實(shí)際上就開始了一個(gè)嵌套事務(wù)。因?yàn)楫?dāng)回滾嵌套事務(wù)時(shí),嵌套的 BEGIN TRANSACTION 語句將被忽略,觸發(fā)器中發(fā)出的 ROLLBACK TRANSACTION 總是回滾過去該觸發(fā)器本身發(fā)出的所有 BEGIN TRANSACTION 語句。ROLLBACK 回滾到最外部的 BEGIN TRANSACTION。

若要在觸發(fā)器中進(jìn)行部分回滾,則即使總是以自動(dòng)提交模式進(jìn)行調(diào)用,也必須使用 SAVE TRANSACTION 語句。以下的觸發(fā)器闡明了這一點(diǎn):

CREATE TRIGGER TestTrig ON TestTab FOR UPDATE AS

SAVE TRANSACTION MyName

INSERT INTO TestAudit

SELECT * FROM inserted

IF (@@error 0)

BEGIN

ROLLBACK TRANSACTION MyName

END

這也影響觸發(fā)器中 BEGIN TRANSACTION 語句后面的COMMIT TRANSACTION 語句。因?yàn)?BEGIN TRANSACTION 啟動(dòng)一個(gè)嵌套事務(wù),而隨后的 COMMIT 語句只應(yīng)用于該嵌套事務(wù)。如果在 COMMIT 之后執(zhí)行 ROLLBACK TRANSACTION 語句,那么 ROLLBACK 將一直回滾到最外部的 BEGIN TRANSACTION。以下的觸發(fā)器闡明了這一點(diǎn):

CREATE TRIGGER TestTrig ON TestTab FOR UPDATE AS

BEGIN TRANSACTION

INSERT INTO TrigTarget

SELECT * FROM inserted

COMMIT TRANSACTION

ROLLBACK TRANSACTION

此觸發(fā)器絕對(duì)不會(huì)在 TrigTarget 表中插入。BEGIN TRANSACTION 總是啟動(dòng)一個(gè)嵌套事務(wù)。COMMIT TRANSACTION 只提交嵌套事務(wù),而下面的 ROLLBACK TRANSACTION 則一直回滾到最外部的 BEGIN TRANSACTION。

MySQL觸發(fā)器怎么實(shí)現(xiàn)回滾

Mysql的觸發(fā)器和存儲(chǔ)過程一樣,都是嵌入到mysql的一段程序。

觸發(fā)器是mysql5新增的功能,目前線上鳳巢系統(tǒng)、北斗系統(tǒng)以及哥倫布系統(tǒng)使用的數(shù)據(jù)庫均是mysql5.0.45版本,很多程序比如fc-star管理端,sfrd(das),dorado都會(huì)用到觸發(fā)器程序,實(shí)現(xiàn)對(duì)于數(shù)據(jù)庫增、刪、改引起事件的關(guān)聯(lián)操作。


網(wǎng)站名稱:mysql觸發(fā)器怎么回滾 mysql自動(dòng)回滾
當(dāng)前鏈接:http://weahome.cn/article/hpdije.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部