美文网首页
MySQL的存贮过程加事务,做个笔记

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

作者: 随缘而处 | 来源:发表于2019-11-07 20:19 被阅读0次

    -- 创建 用户账号表(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

    相关文章

      网友评论

          本文标题:MySQL的存贮过程加事务,做个笔记

          本文链接:https://www.haomeiwen.com/subject/fgfbbctx.html