添加和修改写在一起了

可以用id判断添加和修改

和事务在一起编码

可以让代码更严谨

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

事务四大特性之原子性:原子性是指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生
事务四大特性之一致性:一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

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

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

create PROCEDURE p_AddOrUpd(cid int,cname VARCHAR(),cnum int,ctype VARCHAR(),cbirth VARCHAR(),cmoney VARCHAR(),out code int)
BEGIN
DECLARE t_error int default ;
DECLARE CONTINUE HANDLER for SQLEXCEPTION set t_error=;
START TRANSACTION;
IF cid=/*判断*/
THEN/*添加*/
insert into vip(Name,PhoneNum,VipType,Birth,Money) VALUES (cname,cnum,ctype,cbirth,cmoney);
ELSE/*修改*/
update vip set Name=cname,PhoneNum=cnum,VipType=ctype,Birth=cbirth,Money=cmoney where Id=cid;
END IF; /*错误回滚*/
if t_error=
THEN
set code=;ROLLBACK;
ELSE
set code=;COMMIT;
end IF;
END drop PROCEDURE p_AddOrUpd CALL p_AddOrUpd(,'',,'','','',@code);/*调用存储过程*/
select @code;

接下来是删除

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

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

 create PROCEDURE p_delete(cid int,out code int)
BEGIN
DECLARE t_error int default ;
DECLARE CONTINUE HANDLER for SQLEXCEPTION set t_error=;
START TRANSACTION;
/*删除*/
delete from vip where Id=cid; /*错误回滚*/
if t_error=
THEN
set code=;ROLLBACK;
ELSE
set code=;COMMIT;
end IF;
END CALL p_delete(,@code);
select @code;

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

create PROCEDURE p_pager(pageindex int,pagesize int,out pagecount int,out datacount int,cid int,cname VARCHAR(),ctype VARCHAR())
BEGIN
/*获取查询数据*/
set @sqlpager=concat('select * from vip where 1=1',
IF(cid=,'',concat(' and Id=cid')),
if(cname='','',concat(' and Name like "%',cname,'%"')),
IF(ctype='','',concat(' and VipType="',ctype,'"')),
' limit ',(pageindex-)*pagesize,pagesize); PREPARE s1 from @sqlpager;
EXECUTE s1; /*获取总条数数*/
set @sqlcount=concat('set @datacount=(select count(*) from vip where 1=1',
IF(cid=,'',concat(' and Id=cid')),
if(cname='','',concat(' and Name like "%',cname,'%"')),
IF(ctype='','',concat(' and VipType="',ctype,'"')),')'); PREPARE s2 from @sqlcount;
EXECUTE s2; /*总页数*/
set pagecount=(@datacount*1.0/pagesize); END drop PROCEDURE p_pager; CALL p_pager(,,@pagecount,@datacount,,'','');
select @pagecount,@datacount;

根据条件的判断

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

可以用来查询

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

这就是存储过程加事务

希望能给大家带来帮助!

谢谢浏览!

MySQL--增删改查分页存储过程以及事务的更多相关文章

  1. spring boot+mybatis+mysql增删改查分页

    server: port: servlet: context-path: /springBootMybatis spring: datasource: name: test url: jdbc:mys ...

  2. OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)

    公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...

  3. MySQL—增删改查,分组,连表,limit,union,alter,排序,去重

    MySQL增删改查 在表格的增删改查中,查的内容是最多的,包括group by ,join,limit,union,alter,排序都是服务于查的 #sql语句数据行操作补充 #增加: #insert ...

  4. 基于gin的golang web开发:mysql增删改查

    Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动.标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx. go get git ...

  5. SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)

    前言 说起整合自然离开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4. ...

  6. PHP MySql增删改查

    mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 实例如下: <?p ...

  7. mysql增删改查练习

    Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create dat ...

  8. Django学习之mysql增删改查

    上节介绍了如何使用命令行操作mysql增删改查,现在介绍如何使用python管理mysql 使用pip 下载完mysql后,mysql会以pymysql模块的形式存储在pycharm的包文件里.我们通 ...

  9. node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)

    最近写了一个用node来操作MongoDB完成增.删.改.查.排序.分页功能的示例,并且已经放在了服务器上地址:http://39.105.32.180:3333. Mongoose是在node.js ...

随机推荐

  1. 重庆OI2017 老 C 的任务

    老 C 的任务 时间限制: 2 Sec  内存限制: 512 MB 题目描述 老 C 是个程序员. 最近老 C 从老板那里接到了一个任务——给城市中的手机基站写个管理系统.作为经验丰富的程序员,老 C ...

  2. Python 6 数字和布尔值及字符串的基本功能

    数据类型:查看变量数据类型type(变量)  或者  print(type(变量)) 整数int:就是不带小数的自然数字,也叫整型.在2.X版本中还分为长整型和整形.但是在3.X版本中统一称为整数或整 ...

  3. 洛谷 P1521 求逆序对

    题目描述 我们说(i,j)是a1,a2,…,aN的一个逆序对当且仅当i<j且ai>a j.例如2,4,1,3,5的逆序对有3个,分别为(1,3),(2,3),(2,4).现在已知N和K,求 ...

  4. java中Long 和long的区别

    Java的数据类型分两种:1.基本类型:long,int,byte,float,double,char2. 对象类型(类): Long,Integer,Byte,Float,Double,Char,S ...

  5. 嵌入式linux和嵌入式android系统有什么区别和联系?

    转自:http://bbs.eeworld.com.cn/thread-430437-1-1.html 这个问题很多人问,尤其是初入嵌入式的菜鸟.其实大家都认为android是java,已经不是lin ...

  6. ssl_error_weak_server_ephemeral_dh_key

    1. http://blog.csdn.net/mmoooodd/article/details/50264559 2. http://blog.csdn.net/zhu19774279/articl ...

  7. 洛谷—— P2015 二叉苹果树

    https://www.luogu.org/problem/show?pid=2015 题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点 ...

  8. loosejar原理简要分析

    loosejar这个小工具能够动态分析出应用中有每一个jar包的实际使用情况,详情请參阅<通过loosejar清理应用中冗余的jar包>基本原理是利用instrumentation的特性用 ...

  9. 在imageView依次加入7个手势, 1.点击哪个button,往imageView上加入哪个手势.(保证视图上仅仅有一个手势). 2.轻拍:点击视图切换美女图片.(imageView上首先展示的美女

    // // ControlView.h // HomeworkGestureRecognizer // // Created by lanouhn on 14-8-27. // Copyright ( ...

  10. Sqlite3插入大量数据性能优化

    近期做的一个项目数据量很大.文本数据有30多M.这样就遇到一个问题.插入数据库时很慢. 这里记录下,优化方法很easy. 原文地址:http://blog.csdn.net/qqmcy/article ...