mysql 1422_mysql触发器调用存储过程,报1422错

本文介绍了一种使用触发器和存储过程管理数据库分类的方法。通过示例展示了如何在新增分类时利用触发器调用存储过程来更新分类树。具体包括触发器与存储过程的创建及工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--------------------------------触发器创建新分类触发存储过程-----------------------------DROPTRIGGERIFEXISTScategory_insert_trigger///CREATETRIGGERcategory_insert_trigger...

-- ----------------------------

-- 触发器 创建新分类触发存储过程

-- ---------------------------

DROP TRIGGER IF EXISTS category_insert_trigger ///

CREATE TRIGGER category_insert_trigger AFTER INSERT ON tb_template_category FOR EACH ROW

BEGIN

CALL show_category_tree_procedure(0);

END;

///

-- ----------------------------

-- 存储过程 显示分类的树形结构

-- ----------------------------

DROP PROCEDURE IF EXISTS show_category_tree_procedure ///

CREATE PROCEDURE show_category_tree_procedure (IN rootid INT)

BEGIN

DECLARE category_level int ;

DROP TABLE IF EXISTS tmp_category_table;

CREATE TABLE tmp_category_table (

tmp_id int,

tmp_level int,

tmp_scort varchar(8000)

);

Set category_level=0 ;

INSERT into tmp_category_table SELECT id, category_level, id FROM tb_template_category WHERE parent_id = rootid;

WHILE ROW_COUNT()>0 DO

SET category_level=category_level+1 ;

INSERT into tmp_category_table

SELECT A.id, category_level, concat(B.tmp_scort,A.id)

FROM tb_template_category A,tmp_category_table B

WHERE A.parent_id = B.tmp_id AND B.tmp_level=(category_level-1);

END WHILE;

END;

///

insert语句如下:

INSERT INTO `tb_template_category` VALUES ('7', '3', '测试分类7', '1', '1', '测试分类描述7', current_timestamp(), current_timestamp());

报错信息

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值