添加和修改写在一起了

可以用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. Linux下统计某个目录的文件个数(转)

    1.统计某文件夹下文件个数,不包括子文件夹 比如:统计/home下.jpeg文件的个数 ls -l "/home" | grep ".jpeg" | wc -l ...

  2. MYSQL 字符集 MYSQL 源码

    http://blog.csdn.net/maray/article/details/46504621

  3. dataguard switchover to physical stnadby

    首先做一系列的check check 当前primary 的 standby redo log是否存在 SQL> select * from v$logfile; GROUP# STATUS T ...

  4. 史上最全opencv源代码解读,opencv源代码具体解读文件夹

    本博原创,如有转载请注明本博网址http://blog.csdn.net/ding977921830/article/details/46799043. opencv源代码主要是基于adaboost算 ...

  5. 在Ubuntu 14.04 上安装 FTP 服务

    1. sudo apt-get update 2. sudo apt-get install vsftpd 3. adduser sammy Assign a password when prompt ...

  6. Java:深入自定义注解(Annotation)

    在网上找了很多资料也有写的比较好的,但是总有有一点半点的细节没有写出来,在这里自己总结下使用. 使用Java的自定义注解,首先个人需要了解下Java为我们提供的元注解和相关定义注解的语法.(这个我在网 ...

  7. 系统服务-----Activity服务的获取getSystemService

    android的后台存在非常多service,它们在系统启动的时候被SystemServer开启.来为系统的正常执行做支撑.Activity中要调用这些service就得使用getSystemServ ...

  8. luogu2154 [SDOI2009] 虔诚的墓主人 离散化 树状数组 扫描线

    题目大意 公墓可以看成一块N×M的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地.一块墓地的虔诚度是指以这块墓地为中心的十字架的数目,一个十字架可以看成中间是墓地,墓地的正上.正 ...

  9. ConcurrentDictionary中的 TryRemove

    class A { internal int value; } ConcurrentDictionary<int, A> dic = new ConcurrentDictionary< ...

  10. poi读取docx中的文字和图片(自己应用)

    poi读取docx中的文字和图片(自己应用) package com.fry.poiDemo.dao; import java.io.File; import java.io.FileInputStr ...