MySQL的存贮过程加事务,做个笔记

-- 创建 用户账号表(UserAccount)

create table useraccount

(

id int auto_increment PRIMARY key,

loginname varchar(50) not null,

pwd varchar(50) not null,

createtime datetime not null default now()

)

-- 创建 用户基本信息表(UserInfo)

create table UserInfo

(

id int auto_increment primary key,

accountid int not null,

truename varchar(50) not null comment '用户真实姓名',

age int not null comment '年龄'

)

set @code = '';

set @msg = '';

-- 调用存贮过程

call p_register('sss@sohu.com',123,'江红',20,@code,@msg);

-- 输出存贮过程执行后的结果

select @code,@msg;

drop PROCEDURE p_register;

-- 创建用户注册存贮过程

create procedure p_register

(

in _loginname varchar(50),

in _pwd varchar(50),

in _truename varchar(50),

in _age int,

out _code varchar(50),

out _msg varchar(50)

)

begin

-- 如果存在当前用户

if EXISTS(select * from useraccount where loginname = _loginname) then

set _code = 1;

set _msg = '对不起,您使用的用户名已经存在';

else

begin

-- 用户ID(插入用户账号表(UserAccount)时得Id信息)

declare _userId int default 0;

-- 事务出错的标志

declare _err int default 0;

-- 事务出错时将错误信息保存到 _err中

declare continue handler for sqlexception set _err = 1;

-- 开启事务

start transaction;

-- begin

insert into useraccount(loginname,pwd) values(_loginname,_pwd);

-- 新插入用户信息Id

set _userid = last_insert_id();

-- 用户基本信息表(UserInfo)

insert into userinfo(accountid,truename,age) values(_userid,_truename,_age);

-- 无异常

if _err = 0 then

set _code = 0;

set _msg = conat('恭喜您',_truename,',注册成功!');

commit;

-- commit work;(commit 或 commit work 两个都行)

else -- 有异常

set _code = 1;

set _msg = '对不起,注册失败请重试!';

rollback;

-- rollback work;(rollback; 或 rollback work; 两个都行)

end if;

end;

end if;

end

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,072评论 0 19
  • CREATE TABLE IF NOT EXISTS ecs_order_info (order_id mediu...
    cookie口阅读 15,816评论 0 16
  • 接下来的一些内容,我们需要提前学一些简单的sql语句,方便大家理解接下来的知识。 DDL—数据定义语言(Creat...
    不排版阅读 448评论 0 1
  • 这是来自我死党的DISC报告,在解读之前我已经确认他是在无比清醒和安静的情况填写了问卷,所以这是一份真实并且有效的...
    咪璐Dear阅读 259评论 0 0
  • 1、mkdir ~/ffmpeg_sources 2、sudo apt-get install yasm 3、su...
    Fisher042813阅读 417评论 0 1