|
|
#2
mywisdom882017-05-29 11:40
-- 触发器tr1,若更新了运动员表中的运动员编号,则相应更新比赛积分表的运动员编号。
-- 运动员表(ath_man),运动员编号(ath_no),运动员姓名(ath_name),运动员性别(ath_sex),运动员专业(ath_major)
-- 积分表(match_score),运动员编号(player_no),项目编号(pro_no),积分(score)
/*
-- 如下列子,测试数据,只运行1次
-- 运动员(编号 varchar(6),姓名 varchar(20))
-- 成绩表(编号 varchar(6),项目 varchar(20),成绩 numeric(5,2))
create table 运动员(编号 varchar(6),姓名 varchar(20))
insert into 运动员(编号,姓名)
select '1001','张三' union all
select '1002','李四' union all
select '1003','王五'
create table 成绩表(编号 varchar(6),项目 varchar(20),成绩 numeric(5,2))
insert into 成绩表(编号,项目,成绩)
select '1001','跳舞',80.00 union all
select '1001','武术',90.50 union all
select '1002','跳舞',85.00 union all
select '1002','武术',95.00 union all
select '1003','跳舞',70.50 union all
select '1003','武术',75.50
*/
go
/*
--建立触发器,也只运行1次
create trigger 运动员_tr1
On 运动员 --在那个表触发
for Update --在什么事件触发
As --触发后做什么事情
if Update(编号) --更新编号时才做事情,Deleted 是更新前的临时表,Inserted 是更新后的临时表
begin
update 成绩表 set 编号=i.编号 from 成绩表 c,Deleted d,Inserted i
where c.编号=d.编号
end
*/
go
-- 测试更新
update 运动员 set 编号='B1001' where 编号='1001'
select * from 运动员
select * from 成绩表
|