用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