有這樣乙個需求,要求在mysql儲存過程中使用到事務,而且執行的是動態的sql語句
**如下:
begin
declare in_data text;
/** 標記是否出錯 */
declare errno int default '0';
/** 如果出現sql異常,則將t_error設定為1後繼續執行後面的操作 */
declare continue handler for sqlexception begin rollback;set errno = 1; end;
start transaction;
-- 傳入的語句處理過程
prepare stmt from @in_data;
execute stmt;
if (errno =1) then
rollback;
else
commit;
end if;
select errno;
end呼叫 :set @in_data = 'insert into accounts (`userid`,`password`) value (122222222,2),(22222,11)';
call syn_updata(@in_data);其實這個儲存過程只要是用到事務的地方都可以用到,因為執行的條件是動態的。
MySQL儲存過程 事務transaction
mysql 中,單個 store procedure sp 不是原子操作,而 oracle 則是原子的。如下的儲存過程,即使語句2 失敗,語句 1 仍然會被 commit 到資料庫中 sql view plain copy create table testproc id int 4 primary...
mysql 儲存過程與事務
最近在工作中要實現乙個功能,在乙個php檔案裡有乙個流水號的變數,每次執行這個php的檔案,這個流水號的變數都得不一樣,我就想到用mysql的自增來解決,我寫了乙個儲存過程,create procedure mqsearch in userid int,in type int,out lshs bi...
MySQL儲存過程事務回滾
sql過程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 delimiter createdefiner root localhost procedure test procedure begin declareerrnoint declarecontinueh...