我有两个表中的数据:
student表:
sno (学生学号)、sname(姓名)、sex(性别)sc表:
sid(学生学号)、cpno(选课号)我想要求:当在student表中删除一条记录时,sc表中随之也删除一条记录。而在sc表中删除一条记录时,student对应的记录也删除掉。这两张表根据学生学号关联在一起。我原来是这样实现的:
create trigger del_tri on student
for delete
as
    delete from sc where sid in(select sno from deleted)但是这只能实现单方面触发。如果在sc表中也建了同样的触发器。验证结果时却出现:"超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为 32)。"的错误,哪位高手帮忙看一下。十分感谢!

解决方案 »

  1.   

    你的触发器肯定是写成了一个死循环,造成了重复的嵌套,因为SQL Server的最大嵌套数为32,所以当循环到32层,就抱了这个错误。
    建议楼主不要使用触发器来实现,改用SP来实现。
      

  2.   

    这是我为了做测试实现的两张表相互插入触发。但是相互删除触发就是不对?下面插入触发两张表的结构是一模一样的。
    create table s(sno int primary key(sno),sname char(30))
    create table t(sno int primary key(sno),sname char(30))create trigger inse_tri on s
    for insert
    as
    if exists(select sno from s where sno not in(select sno from t))
    begin
    insert into t
    select * from inserted
    endcreate trigger inser_tri on t
    for insert
    as
    if exists(select sno from t where sno not in(select sno from s))
    begin
    insert into s
    select * from inserted
    end