关于mysql存储过程和事务的处理

鉴于最近的一个项目里自己后台搭的和shi一样,不得不转换一些操作到存储过程上,

但是,见鬼的地方来了——

360文库和百度搜索果然靠不住,mysql的语法也是有点鬼,

谨以此文祭奠我浪费的一个下午


CREATE  PROCEDURE Update_Company

(INOUT _CompanyId INT,_Name VARCHAR(100),_Address VARCHAR(200),

_Scale INT,_RegisterNo CHAR(18),_License VARCHAR(300),_Corporate CHAR(20),

_Introduction VARCHAR(600),_BussinessScopes VARCHAR(600),_UserId INT )

BEGIN

DECLARE tempId INT;

DECLARE t_error INTEGER  DEFAULT 0;

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error =1;

START TRANSACTION;

UPDATE company

SET Status=0

WHERE CompanyId= _CompanyId;

INSERT INTO company (Name,Address,Scale,RegisterNo,License,Corporate,Introduction,BusinessScope,Status,UserId)

VALUE(_Name,_Address,_Scale,_RegisterNo,_License,_Corporate,_Introduction,_BussinessScopes,1,_UserId);

SET tempId =last_insert_id();

UPDATE company_apply_record

SET CompanyId= tempId

WHERE CompanyId= _CompanyId;

UPDATE recruitment

SET CompanyId= tempId

WHERE CompanyId= _CompanyId;

SET _CompanyId = tempId;

IF t_error <>0

THEN ROLLBACK;

ELSE COMMIT;

END IF;

SELECT t_error;

END;

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

推荐阅读更多精彩内容

  • 任务需求:定时执行的任务,调用存储过程,进行数据迁移。 存储过程相关总结:(存储过程的创建 不能伴随有if exi...
    时待吾阅读 3,130评论 0 4
  • 当一个大型系统在建立时,会发现,很多的SQL操作是有重叠的,个别计算是相同的,比如:业务系统中,计算一张工单的计算...
    JackFrost_fuzhu阅读 3,456评论 0 27
  • 本文主要基于一篇 MySQL Tutorial的文章,同时补充了自己的几个实践。 概述 我们在执行普通的 MySQ...
    li3p阅读 3,682评论 0 0
  • 楼内一片漆黑,只有楼梯间窗户透进来的一点光亮。我掏出了随身携带的手电筒,摸索着找到了消防梯,顺着黑暗狭窄的甬道慢慢...
    初霁713阅读 347评论 2 2
  • “若白呀!你看那几个女学生长得怎么样呀?”廷皓。 “嗯。”若白。 “嗯,嗯是什么意思?好还是不好?”亦...
    杨洋一笑绝色倾城阅读 331评论 0 0