mysql分页删除_MySQL--增删改查分页存储过程以及事务

添加和修改写在一起了

可以用id判断添加和修改

和事务在一起编码

可以让代码更严谨

在这里简单的说一下事务的四大特性

事务四大特性之原子性:原子性是指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生

事务四大特性之一致性:一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

事务四大特性之隔离性: 多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果

事务四大特性之持久性: 持久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚

create PROCEDURE p_AddOrUpd(cid int,cname VARCHAR(200),cnum int,ctype VARCHAR(200),cbirth VARCHAR(200),cmoney VARCHAR(200),out code int)

BEGIN

DECLARE t_errorint default 0;

DECLARE CONTINUE HANDLERfor SQLEXCEPTION set t_error=1;

START TRANSACTION;

IF cid=0/*判断*/THEN/*添加*/insert into vip(Name,PhoneNum,VipType,Birth,Money) VALUES (cname,cnum,ctype,cbirth,cmoney);

ELSE/*修改*/update vipset Name=cname,PhoneNum=cnum,VipType=ctype,Birth=cbirth,Money=cmoney where Id=cid;

END IF;/*错误回滚*/

if t_error=1THENset code=1;ROLLBACK;

ELSEset code=0;COMMIT;

end IF;

END

drop PROCEDURE p_AddOrUpd

CALL p_AddOrUpd(0,'1',1,'1','1','1',@code);/*调用存储过程*/select @code;

接下来是删除

删除和正常的代码区别不大

加上事务也是非常的清晰明了

1 create PROCEDURE p_delete(cid int,out code int)2 BEGIN3 DECLARE t_error int default 0;4 DECLARE CONTINUE HANDLER for SQLEXCEPTION set t_error=1;5 START TRANSACTION;6 /*删除*/

7 delete from vip where Id=cid;8

9 /*错误回滚*/

10 if t_error=1

11 THEN12 set code=1;ROLLBACK;13 ELSE14 set code=0;COMMIT;15 end IF;16 END17

18

19 CALL p_delete(1,@code);20 select @code;

最后就是分页查询修改时的数据反填了

create PROCEDURE p_pager(pageindex int,pagesize int,out pagecount int,out datacount int,cid int,cname VARCHAR(200),ctype VARCHAR(200))

BEGIN/*获取查询数据*/

set @sqlpager=concat('select * from vip where 1=1',

IF(cid=0,'',concat('and Id=cid')),if(cname='','',concat('and Name like "%',cname,'%"')),

IF(ctype='','',concat('and VipType="',ctype,'"')),'limit',(pageindex-1)*pagesize,pagesize);

PREPARE s1from@sqlpager;

EXECUTE s1;/*获取总条数数*/

set @sqlcount=concat('set @datacount=(select count(*) from vip where 1=1',

IF(cid=0,'',concat('and Id=cid')),if(cname='','',concat('and Name like "%',cname,'%"')),

IF(ctype='','',concat('and VipType="',ctype,'"')),')');

PREPARE s2from@sqlcount;

EXECUTE s2;/*总页数*/

set pagecount=(@datacount*1.0/pagesize);

END

drop PROCEDURE p_pager;

CALL p_pager(1,3,@pagecount,@datacount,0,'','');select @pagecount,@datacount;

根据条件的判断

可是识别获取的数据用来显示

可以用来查询

也可以用来修改时的数据反填

这就是存储过程加事务

希望能给大家带来帮助!

谢谢浏览!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值