mysql中三张表建立触发器问题

时间:2021-08-06 10:57:40
EMS SQL Manager 2007 for MySQL 


有三张表 student(student,name),section(section,course,num),enrolls(section,course,student)
要求:当删除student表中的一个学生时,enrolls表中要删除一组数据,同时section表中的num要进行改变
section表中,主码由section和course决定
我建了一个触发器
create trigger students_enrolls_de
after delete on students
for each ROW
begin 
delete from enrolls   
WHERE student=old.student;
create table a
select enrolls.section,count(enrolls.course) num,enrolls.course
from enrolls,section
where section.course=enrolls.course 
and section.section=enrolls.section
group by enrolls.course,enrolls.section;
END;
本来想建立一个新表,然后与section表中的数据产生联系,达到修改num的目的
这是一半代码,显示语法错误,
是不是触发器中不能 建立新表

如果不能,这个问题应该怎样解决

请高手尽快回复,谢谢

10 个解决方案

#1


帮顶

#2


触发器中不要进行太复杂的东西。
建立表的咚咚要交给存储过程来处理。

#3


而且每次错误的信息要贴出来

#4


在这个表enrolls(section,course,student)新建一个触发器吧,指向section。

#5


建表操作不应该放在触发器中。

重新梳理一下你的逻辑

#6


LZ 先看看手册中关于触发器和存储过程的用法再说
^^

#7


好的,谢谢各位,我再测试 一下~
又有一点新的想法,能不能在子查询中返回两个值,比如 在Enrolls表中同时返回 section和course两个值

#8


顺便问一句,现在的MYSQL中支持CHECK约束么~貌似不起什么作用...

#9


只是一个样子,暂时不起任何作用。

#10


哦,好的,谢谢,钻研存储过程去了...
搞定了大家一起+分~^.^

#1


帮顶

#2


触发器中不要进行太复杂的东西。
建立表的咚咚要交给存储过程来处理。

#3


而且每次错误的信息要贴出来

#4


在这个表enrolls(section,course,student)新建一个触发器吧,指向section。

#5


建表操作不应该放在触发器中。

重新梳理一下你的逻辑

#6


LZ 先看看手册中关于触发器和存储过程的用法再说
^^

#7


好的,谢谢各位,我再测试 一下~
又有一点新的想法,能不能在子查询中返回两个值,比如 在Enrolls表中同时返回 section和course两个值

#8


顺便问一句,现在的MYSQL中支持CHECK约束么~貌似不起什么作用...

#9


只是一个样子,暂时不起任何作用。

#10


哦,好的,谢谢,钻研存储过程去了...
搞定了大家一起+分~^.^