有两个表:
学生表:st
tno  tname
1    小明
2    小华学生借书记录表:re
tno  bn
1    PB开发
2    SQL Server当更新学生表:st中的tno时,学生借书记录表:re中的tno也要更新,
我写了一个触发器如下:但执行有错误,不知道哪里错了?
create trigger u
on st
for updateif update(tno)begin
  update re set tno=insertd.tno
  from re,deleted,insertd
  where re.tno=deleted.tno
end

解决方案 »

  1.   

    create trigger u 
    on st 
    for update 
    as
    if update(tno) begin 
      update re set tno=insertd.tno 
      from re,deleted,insertd 
      where re.tno=deleted.tno 
      and re.name=inserted.name
    end 
      

  2.   

    create table st(tno int primary key,tname varchar(10));
    create table re(tno int REFERENCES  st(tno) ON UPDATE  CASCADE ,bn varchar(10));
    insert into s values (1,'小明');
    insert into st values (2,'小华');
    insert into re values (1,'PB开发    ');
    insert into re values (2,'SQL Server');1> select * from st;
    2> select * from re;
    3> go
    tno        |tname
    -----------|----------
              1|小明
              2|小华(2 rows affected)
    tno        |bn
    -----------|----------
              1|PB开发
              2|SQL Server(2 rows affected)
    1> update st
    2> set tno=tno+10;
    3> go(2 rows affected)
    1> select * from st;
    2> select * from re;
    3> go
    tno        |tname
    -----------|----------
             11|小明
             12|小华(2 rows affected)
    tno        |bn
    -----------|----------
             11|PB开发
             12|SQL Server(2 rows affected)
    1>
      

  3.   

    如果只是更新才改,则如下:
    create trigger u on st for update 
    begin 
      update re set tno = (select tno from inserted) where tno = (select tno from deleted) 
    end 
      

  4.   


    不用and re.name=inserted.name 什么结果!