#插入分类时的更新 pid path child childids的操作
DELIMITER &&
CREATE TRIGGER tg1
BEFORE INSERT
ON kwx_category
FOR EACH ROW
BEGIN
IF (NEW.pid<>0) #插入的分类不是顶级分类
THEN #子分类
#更新当前分类
SET NEW.path=CONCAT((
SELECT
path
FROM kwx_category
WHERE id=NEW.pid),',', NEW.pid), NEW.module=(
SELECT
kwx_module.title
FROM kwx_module
WHERE id=NEW.moduleid);
#出现错误的位置begin======================================
UPDATE kwx_category #出现错误!!!!
SET child=1, childids=CONCAT(childids,',', NEW.id)
WHERE id=NEW.pid;
#出现错误的位置end======================================
ELSE #顶级分类
#更新当前分类
SET NEW.path=NEW.id, NEW.module=(
SELECT
kwx_module.title
FROM kwx_module
WHERE id=NEW.moduleid);
END IF;
END
&&
DELIMITER ;
执行SQL语句出现错误 说不能更新~
这是为什么呢?
数据库结构:
'Can't update table 'kwx_category' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.'报错语句~
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
<spanstyle="font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;line-height:14.65625px;background-color:#F8F8F8;">childids是字符类型吗?是的先别走哈你看下数据库结构我修改下问题
把你得update语句去掉换成set设值就可以了
已经有错误提示了.解发器不能访问当前表的rightanswer你的触发器是 BEFORE INSERT,在这里还不会产生NEW.id吧?试下改成AFTERINSERT。