MySQL--增删改查分页存储过程以及事务
添加和修改写在一起了
可以用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--增删改查分页存储过程以及事务的更多相关文章
- spring boot+mybatis+mysql增删改查分页
server: port: servlet: context-path: /springBootMybatis spring: datasource: name: test url: jdbc:mys ...
- OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)
公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...
- MySQL—增删改查,分组,连表,limit,union,alter,排序,去重
MySQL增删改查 在表格的增删改查中,查的内容是最多的,包括group by ,join,limit,union,alter,排序都是服务于查的 #sql语句数据行操作补充 #增加: #insert ...
- 基于gin的golang web开发:mysql增删改查
Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动.标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx. go get git ...
- SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)
前言 说起整合自然离开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4. ...
- PHP MySql增删改查
mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 实例如下: <?p ...
- mysql增删改查练习
Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create dat ...
- Django学习之mysql增删改查
上节介绍了如何使用命令行操作mysql增删改查,现在介绍如何使用python管理mysql 使用pip 下载完mysql后,mysql会以pymysql模块的形式存储在pycharm的包文件里.我们通 ...
- node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)
最近写了一个用node来操作MongoDB完成增.删.改.查.排序.分页功能的示例,并且已经放在了服务器上地址:http://39.105.32.180:3333. Mongoose是在node.js ...
随机推荐
- python 多个相同字符串
1.相同字符串str,重复打印n次. str=str*n 2.填充字符串str为指定宽度n,左边填充0. str.zfill(n)
- hdu_hpu第八次周赛_1001 To and Fro 201310270918
To and Fro Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Su ...
- [bzoj2467][中山市选2010]生成树_快速幂
生成树 bzoj-2467 中山市选2010 题目大意:题目链接 注释:略. 想法:首先,考虑生成树的性质.每两个点之间有且只有一条路径.我们将每个五边形的5条边分为外面的4条边和内部的一条边,在此简 ...
- CF #330 C
改了题目之后,就是没有奇数的测试了... 其实可以很轻易地发现,要距离近的一方只会删除两端的,而要求远的一方会删除中间的. 那么,很明显的,剩下的两点会相差x/2个节点,于是,只要计算i和i+x/2的 ...
- ios 使用Safari浏览器跳转打开、唤醒app
常常使用Safari浏览器浏览网页点击url会唤醒该站点的手机版app 须要在app的project中设置 1.打开project中的myapp-Info.plist文件 2.打开文件里新增URL T ...
- 使用oracle数据库和MySQL数据库时hibernate的映射文件.hbm.xml的不同
假设是使用oracle数据库.那么hibernate的映射文件.hbm.xml例如以下: <id name="xuehao" column="xuehao" ...
- 查找存在某字符的文件列表,不包括svn文件
find . ! -wholename '*.svn*' -print | xargs grep "img" | awk -F ':.' '{print $1}' | uniq
- android 添加一个按键键值【转】
本文转载自:http://blog.csdn.net/u012719256/article/details/52526046 1.frameworks/base/data/keyboards/Gene ...
- jquerymobile之collapsible可折叠块标题内容动态显示
jquery mobile提供了一种可折叠的组件--data-role="collapsible",这种组件可以通过点击折叠块头部来展开/折叠块内的内容,详细组件说明可参考w3cs ...
- web认证方案
web构建在http之上,而它又是无状态协议,如何控制用户访问服务器上的受限资源呢? 最原始你想法通过http基本认证,每次发请求时都向后台传递用户名密码信息,服务器每次收到请求后都先验证用户是否合法 ...