永发信息网

用T-SQL语句实现触发器:

答案:1  悬赏:40  手机版
解决时间 2021-04-16 13:18

用T_Sql(sql2000)语句创建触发器 实现course表(课程号,课程名称,教师姓名),studentscourse(学号,课程号,成绩,学分)的级联,
当删除或者更新course表中的课程号的记录时,要激发触发器tri_stu在studentcourse表中也删除或者更新相对应的记录行。(下面时我的三种
方法,有错误,为什么????)

1.
IF EXISTS (Select name FROM sysobjects Where name = 'tri_stu' AND type = 'TR')
Drop TRIGGER tri_stu
GO
create trigger tri_stu
on course
for delete,update
as
if not exists(select * from inserted)
begin
delete studentcourse s inner join deleted d on s.课程号=d.课程号
end
else
begin
update studentcourse s inner join deleted d on s.课程号=d.课程号
end

2.
CREATE TRIGGER tri_stu ON course
FOR UPDATE,DELETE
AS
BEGIN
DECLATE @i int,@j int
SELECT @i = COUNT(*) FROM INSERTED
SELECt @j = COUNT(*) FROM DELETeD
IF @i = 0 --delete
delete studentcourse s inner join deleted d on s.课程号=d.课程号
IF @i<>0 AND @j<>0 --update
update studentcourse s inner join deleted d on s.课程号=d.课程号
END

3.
Create Trigger tri_stu
ON course
FOR Delete,Update
AS
if exists(select * from inserted)
if exists(select * from deleted)
update studentcourse s inner join deleted d on s.课程号=d.课程号

else
if exists(select * from deleted)
delete studentcourse s inner join deleted d on s.课程号=d.课程号
Go

最佳答案

把更新和删除分成2个单独的触发器,更新时对inseted和deleted表都有影响


和删除放在一起容易产生错误

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
属虎的2015年虚岁是五十几岁
中国农业银行哈尔滨大街分理处地址有知道的么
杭州到瑶琳仙境怎么坐车
哪个牌子针式打印机好用
永恒之塔最新的服务区是哪个?我是浙江的,最
为什么我的电脑在启动游戏后就出现加载模块错
关于交通安全的句子?
一条什么的大河???
梦雪食品便利店这个地址在什么地方,我要处理
PASCAL中的xor 是什么意思?
贵州叫荤子是什么动物,求一种动物名字:四川
海信电视led32ec260jd怎样连结机顶盒
清兴宾馆怎么去啊,有知道地址的么
大学生买电脑利大弊大?反方弊大于利的一辨论
苯是什么味道,怎样去除装修苯类气味
推荐资讯
怎么闷鱼才好吃
为什么海尔不是世界500强企业!
什么牌子的脱毛器好用,衣服去毛器哪儿有卖,
大家好哇,我是16届的小可爱啊
客户生日贺卡祝福语
2017年9月14日到9月17日的月亮是怎么样的
用than most+名词复数造5句话(英文)
爱情适合做个签的诗句,有人看过谁是大英雄吗
两个人对于仪式感的认识不同
爱他放不下他的句子,形容心里放不下你的诗句
中国有名的考古栏目有哪些 比如【国宝档案】
象棋术语,宁失子,不失先 是什么意思?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?