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