create procedure aa()
begin
start transaction;
SET @i = 1;
while @i <= 5 do
insert into abc values ('a');
SET @i = @i + 1;
if @i = 3 then
rollback;
end if;
end while;
end结果abc表里插入了3条记录,为什么rollback不起作用呢???怎样才能使数据全回滚啊???
begin
start transaction;
SET @i = 1;
while @i <= 5 do
insert into abc values ('a');
SET @i = @i + 1;
if @i = 3 then
rollback;
end if;
end while;
end结果abc表里插入了3条记录,为什么rollback不起作用呢???怎样才能使数据全回滚啊???
create procedure aa()
begin
start transaction;
SET @i = 1;
while @i <= 5 do
insert into abc(a) values ('a');
SET @i = @i + 1;
if @i = 3 then
rollback;
end if;
end while;
end||
delimiter ;Table's body.CREATE TABLE `abc` (
`id` int(10) unsigned NOT NULL auto_increment,
`a` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
select * from abc;query resultid a
3 a
4 a
5 a如果没有IF 判断的话,ID 为1 和 2的记录是插进去的。因为有IF判断,所以回滚了。