#插入分类时的更新 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。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。