sql過程**:?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
delimiter $$
create
definer=`root`@`localhost`
procedure
`test_procedure`()
begin
declare
errno
int
;
declare
continue
handler
for
sqlexception
begin
rollback
;
set
errno=1;
end
;
start
transaction
;
set
errno=0;
insert
into
test(
name
)
values
(
'kaka'
);
insert
into
test(id,
name
)
values
(1,
'papa'
);
commit
;
select
errno;
end
過程說明:
1、首先表中已經存在一條記錄(1,'baby');
2、呼叫測試儲存過程;
3、該過程首先宣告error變數,和乙個sql異常處理handler,該handler觸發時會回滾事務,並將error置為1;
事務開始,將error置為0,插入一條資料name為『kaka』,再插入一條資料(1,'papa'),然後提交;
但第二次插入資料時,主鍵id已存在,此處會報異常觸發我們的sql異常處理handler。實現回滾並將error置為1;
檢視error值;
4、呼叫儲存過程之後檢視測試表中的資料是否回滾;
呼叫前:
呼叫中:
呼叫後:
建庫sql:?
1
2
3
4
5
6
7
8
create
database
if
not
exists `test`;
use `test`;
drop
table
if exists `test`;
create
table
`test` (
`id`
int
(11)
not
null
auto_increment,
`
name
`
varchar
(45)
default
null
,
primary
key
(`id`)
) engine=innodb auto_increment=5
default
charset=utf8;
綜上,可以通過在儲存過程中宣告異常處理handler使得我們的事物達到回滾效果
來自:
sql server儲存過程回滾事務
set nocount on這個很常用 作用 阻止在結果集中返回顯示受t sql語句或則usp影響的行計數資訊。當set oncount on時候,不返回計數,當set nocount off時候,返回計數 即使當set nocount on 時候,也更新 rowcount 當set nocount...
mysql儲存引擎,事務,事務回滾
檢視已有表的使用儲存引擎 show create table 表名 g 檢視當前資料庫的預設儲存引擎和可提供的儲存引擎 show engines 修改儲存引擎 step1 修改配置檔案 etc my.cnf default storage engine 儲存引擎 step2 重啟mysqld服務 修...
mysql事務回滾
先收集網上的一些,待仔細測試研究 事務是資料庫更新操作的基本單位,事務回滾是指將該事務已經完成的對資料庫的更新操作撤銷。所謂事務是使用者定義的乙個資料庫操作序列,這些操作要麼全做要麼全不做,是乙個不可分割的工作 單位。例如,在關聯式資料庫中,乙個事務可以是一條sql語句 一組sql語句或整個程式。簡...