mysql 代替触发器的方法_Mysql不得不用储存过程代替触发器

博客讲述了在MySQL中遇到触发器无法满足需求的情况,尤其是触发器不能修改本表其他记录的问题。作者转而使用储存过程,但发现其语法相对繁琐,尤其是在处理复杂逻辑时。文章通过一个具体的例子展示了如何创建并使用储存过程来实现原本触发器应完成的功能,以解决数据绑定和冲突处理的问题。
摘要由CSDN通过智能技术生成

这是发在的问题,没人回答,只好自己动手了。翻书后发现触发器的概念能很好地解决问题,但很快发现....

unique索引会先于触发器要触发,update数据时,如果引起索引冲突,直接就报错了,根本轮不到触发器。于是删除索引,但很快发现.....

mysql的触发器不能修改本表其他记录!!!mssql是可以的!!!这样对于删除的需求就没办法实现了,只好翻到储存过程,但很快发现....

mysql的储存过程语法实在太烦琐了,特别是组装带参数的执行语句时,一个语句最少要写四行,而mssql直接用类似于js的语法连起来就可以用了。执行后的结果集还不能直接使用,又要兜个圈用视图来保存结果集,再调用......是不是因为我太菜了,没法理解这样高深的用法。

其实很简单的逻辑,前后花了一整天的时间才解决了需求,贴出来以纪念菜鸟的时刻。

DROP PROCEDURE IF EXISTS `bookshelf_binding`;

CREATE DEFINER = `root`@`127.0.0.1` PROCEDURE `bookshelf_binding`(`shelf_type` varchar(30),`source_id` int,`admin_id` int)

BEGIN

declare done int default 0;

declare tmp_book_id int;

declare tmp_id INT;

declare tmp_status int

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值