一个表中的触发器想要向另一个表插入数据
createtriggergoods_1beforeinsertongoodsforeachrowbegininsertintoshoujian(worker)value...
create trigger goods_1 before insert on goods for each row
begin
insert into shoujian(worker) value(select worker from worker where address=new.jijianrenaddress)
end
goods表中的触发器,要插入worker中的数据worker的值到shoujian表的worker字段
显示select worker from worker where address=new.jijianrenaddress是有错的,这样的触发器应该怎么写呢?
是mysql的 展开
begin
insert into shoujian(worker) value(select worker from worker where address=new.jijianrenaddress)
end
goods表中的触发器,要插入worker中的数据worker的值到shoujian表的worker字段
显示select worker from worker where address=new.jijianrenaddress是有错的,这样的触发器应该怎么写呢?
是mysql的 展开
2个回答
展开全部
这个你得建插入、删除和更新三种触发器。
create trigger tr_in_选课表 on 选课表
FOR INSERT
as
update 课程表 set 选课人数=选课人数+1 where 课程编号=(select 课程编号 from inserted)
go
--删除的,删除时那就要减1
create trigger tr_del_选课表 on 选课表
FOR DELETE
AS
update 课程表 set 选课人数 = 选课人数-1 where 课程编号=(select 课程编号 from deleted)
GO
--更新选课表的时候
create trigger tr_up_选课表 on 选课表
FOR update
as
----如果更新的是课程编号,即本来先的是英语,后来改数学了
if update(课程编号) begin
update 课程表 set 选课人数=选课人数-1 where 课程编号=(select 课程编号 from deleted)
update 课程表 set 选课人数=选课人数+1 where 课程编号=(select 课程编号 from inserted)
---第一行把旧编号的选课人数-1
--第二行把新编号的选课人数+1
end
--- 大体上就是这么一个逻辑,自己再稍微按需完善一下即可。
GO
create trigger tr_in_选课表 on 选课表
FOR INSERT
as
update 课程表 set 选课人数=选课人数+1 where 课程编号=(select 课程编号 from inserted)
go
--删除的,删除时那就要减1
create trigger tr_del_选课表 on 选课表
FOR DELETE
AS
update 课程表 set 选课人数 = 选课人数-1 where 课程编号=(select 课程编号 from deleted)
GO
--更新选课表的时候
create trigger tr_up_选课表 on 选课表
FOR update
as
----如果更新的是课程编号,即本来先的是英语,后来改数学了
if update(课程编号) begin
update 课程表 set 选课人数=选课人数-1 where 课程编号=(select 课程编号 from deleted)
update 课程表 set 选课人数=选课人数+1 where 课程编号=(select 课程编号 from inserted)
---第一行把旧编号的选课人数-1
--第二行把新编号的选课人数+1
end
--- 大体上就是这么一个逻辑,自己再稍微按需完善一下即可。
GO
追问
可以了,谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询