有两个表:
学生表: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
学生表: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
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
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>
create trigger u on st for update
begin
update re set tno = (select tno from inserted) where tno = (select tno from deleted)
end
不用and re.name=inserted.name 什么结果!