MySQL的存貯過(guò)程加事務(wù),做個(gè)筆記

-- 創(chuàng)建 用戶賬號(hào)表(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()

)

-- 創(chuàng)建 用戶基本信息表(UserInfo)

create table UserInfo

(

id int auto_increment primary key,

accountid int not null,

truename varchar(50) not null comment '用戶真實(shí)姓名',

age int not null comment '年齡'

)

set @code = '';

set @msg = '';

-- 調(diào)用存貯過(guò)程

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

-- 輸出存貯過(guò)程執(zhí)行后的結(jié)果

select @code,@msg;

drop PROCEDURE p_register;

-- 創(chuàng)建用戶注冊(cè)存貯過(guò)程

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

-- 如果存在當(dāng)前用戶

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

set _code = 1;

set _msg = '對(duì)不起,您使用的用戶名已經(jīng)存在';

else

begin

-- 用戶ID(插入用戶賬號(hào)表(UserAccount)時(shí)得Id信息)

declare _userId int default 0;

-- 事務(wù)出錯(cuò)的標(biāo)志

declare _err int default 0;

-- 事務(wù)出錯(cuò)時(shí)將錯(cuò)誤信息保存到 _err中

declare continue handler for sqlexception set _err = 1;

-- 開(kāi)啟事務(wù)

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);

-- 無(wú)異常

if _err = 0 then

set _code = 0;

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

commit;

-- commit work;(commit 或 commit work 兩個(gè)都行)

else -- 有異常

set _code = 1;

set _msg = '對(duì)不起,注冊(cè)失敗請(qǐng)重試!';

rollback;

-- rollback work;(rollback; 或 rollback work; 兩個(gè)都行)

end if;

end;

end if;

end

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是數(shù)據(jù)庫(kù)? 數(shù)據(jù)庫(kù)是存儲(chǔ)數(shù)據(jù)的集合的單獨(dú)的應(yīng)用程序。每個(gè)數(shù)據(jù)庫(kù)具有一個(gè)或多個(gè)不同的API,用于創(chuàng)建,訪問(wèn),管理...
    chen_000閱讀 4,136評(píng)論 0 19
  • CREATE TABLE IF NOT EXISTS ecs_order_info (order_id mediu...
    cookie口閱讀 16,124評(píng)論 0 16
  • 接下來(lái)的一些內(nèi)容,我們需要提前學(xué)一些簡(jiǎn)單的sql語(yǔ)句,方便大家理解接下來(lái)的知識(shí)。 DDL—數(shù)據(jù)定義語(yǔ)言(Creat...
    不排版閱讀 474評(píng)論 0 1
  • 這是來(lái)自我死黨的DISC報(bào)告,在解讀之前我已經(jīng)確認(rèn)他是在無(wú)比清醒和安靜的情況填寫了問(wèn)卷,所以這是一份真實(shí)并且有效的...
    咪璐Dear閱讀 286評(píng)論 0 0
  • 1、mkdir ~/ffmpeg_sources 2、sudo apt-get install yasm 3、su...
    Fisher042813閱讀 427評(píng)論 0 1

友情鏈接更多精彩內(nèi)容