为表student创建一个更新触发器,当更改student中某学生的student_id时,同时将student_course中该学生的student_id更新。

解决方案 »

  1.   

    create tigger f on student
    for update 
    as
    begin
    update a set student_id=xx from student_course a,instered i where a.student_id=i.student_id
    end
      

  2.   

    你非要更新那就要先删除student_course的相应记录,然后修改student表
    删除应该可以使用事前触发器instead of
      

  3.   

    你这个不是用触发器,是用级联./*
    标题:两表通过字段关联进行级联删除。
    作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开) 
    时间:2008-11-20
    地点:广东深圳
    */create table ta(id int not null)
    create table tb(id int , aid int)
    insert into ta values(1)
    insert into ta values(2)
    insert into tb values(1 , 1)
    insert into tb values(2 , 2)
    insert into tb values(3 , 1)
    go--一、查看原始数据
    --ta表的原始数据
    select * from ta
    /*
    id          
    ----------- 
    1
    2
    */
    --tb表的原始数据
    select * from tb
    /*
    id          aid         
    ----------- ----------- 
    1           1
    2           2
    3           1
    */--二、看看没有创建级联删除时的情况(删除ta表id=1的数据,看看是否影响tb表)
    delete from ta where id = 1
    select * from ta
    /*
    id          
    ----------- 
    2
    */
    select * from tb
    /*
    id          aid         
    ----------- ----------- 
    1           1
    2           2
    3           1
    */--三、恢复原始数据,创建级联删除,删除ta表id=1的数据,看看是否影响tb表
    insert into ta values(1)
    --为ta创建主健
    alter table ta add constraint pk_ta_id primary key (id)
    go
    --为tb创建外健,并指定级联删除
    alter table tb add constraint fk_tb_aid foreign key (aid) references ta(id) on delete cascade
    go
    delete from ta where id = 1
    select * from ta
    /*
    id          
    ----------- 
    2
    */
    select * from tb
    /*
    id          aid         
    ----------- ----------- 
    2           2
    */--删除级联约束
    alter table tb drop constraint fk_tb_aid
    go
    --删除测试表
    drop table ta , tb
    go
      

  4.   

    不需要先删除student_course相应的id吗?
      

  5.   

    如果每次更新只更新一个(如果一次更新多个没办法找对应关系,特别是存在同姓名的情况下)create trigger tri_stu_update
    on student
    for update
    as 
      declare @oldid varchar(20),@newid varchar(20)
      select @oldid=ltrim(student_id) from deleted;
      select @newid=ltrim(student_id) from inserted;
      update student_course
      set student_id=@newid
      where student_id=@oldid
    end