美文网首页
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的存贮过程加事务,做个笔记

    -- 创建 用户账号表(UserAccount) create table useraccount ( id in...

  • Redis学习笔记:事务

    Redis学习笔记:事务 原文链接:Redis学习笔记:事务 一、事务的描述 和MySQL一样,Redis中也有事...

  • 数据库锁及事务整理

    参考文档 MySQL的事务和隔离级别理解事务 - MySQL 事务处理机制《MySQL技术内幕》读书笔记一文说尽M...

  • Redis事务锁CAS实现以及深入误区

    Redis中的事务 Redis的事务没有mysql那么的丰富,但在JAVA web的开发过程中利用mysql事务锁...

  • mysql笔记

    mysql笔记 查看事务隔离级别 show variables like '%iso%'; 设置事务级别 mysq...

  • spring cloud zipkin2 + mysql

    前言:将springboot升级至2.0后,发现zipkin2使用mysql做日志存储出错,现将解决过程做个笔记。...

  • MySQL基础之事务编程学习笔记

    MySQL基础之事务编程学习笔记 在学习《MySQL技术内幕:SQL编程》一书,并做了笔记。本博客内容是自己学了《...

  • MYSQL 事务以及锁(一)

    学习笔记是学习了 极客时间 - 《MySQL实战45讲》整理的笔记。 事务隔离 事务的隔离性 原子性 一致性 隔...

  • Mysql事务笔记

    1. 事务简介 事务具有ACID特性 A 原子性,原子性指整个数据库事务是不可分割的工作单位。 C 表示一致性,也...

  • Mysql事务笔记

    事务特性(ACID) 原子性:原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生; 一致...

网友评论

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

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