触发器实现当一个表中字段发生变化时同时改变另一个表中字段
1.建表
新建两个表一个叫做Telephonics用来存放航班全部字段的数据,主键为SelfNum航迹号;另一个一个叫做FlightAndSection用来存放航迹号、航班号、扇区编号、时间字段。
create table Telephonics(
-------------------------------总体----------------------------------
TrackNum tinyint null, --包中航迹的数量,不能超过255 00
ID int identity(1,1),
---------------------------短字节共有部分---------------------
TrackRelted int null, --航迹相关性,第一个bit 1是 0非,后七个bit航迹来源 01
SelfNum int not null primary key, --航迹号 具有唯一性 02
SSRCode int null, --应答机编码 2字节非负整数 04
Latitude float null, --位置__纬度,4字节浮点数,单位:弧度, 网络序 06
Longitude float null, --位置__经度,4字节浮点数,单位:弧度, 网络序 10
VelComOfLati int null, --纬度速度分量,4字节,单位:弧度/秒, 网络序 14
VelComOfLong int null, -- 经度速度分量,4字节,单位:弧度/秒, 网络序 18
Altitude int null, -- 飞行高度,2字节整数,单位100英尺,网络序 22
TTime datetime null, --时间,自1970/1/1起,秒数
---------------------------长字节特有------------------------
FlightNum varchar(20) null, --航班号,8字节 28
DepartAp varchar(20) null, --起飞机场,四字节代码 36
DepartTi varchar(20) null, --起飞时间,可能为UTC时间 40
Aircraft varchar(20) null, --机型,6字节 44
Section varchar(20) null, --扇区编号,2字节 50
Tail varchar(20) null, --尾流类型 51
)
create table FlightAndSection
(
TrackCode int not null primary key, --航迹号 具有唯一性 02
FlightCode varchar(20) null, --航班号,8字节 28
SectionCode varchar(20) null, --扇区编号,2字节 50
FTime datetime null, --时间,自1970/1/1起,秒数
)
2.创建触发器
在Telephonics表上创建触发器,当Telephonics表中插入新数据时FlightAndSection表中对应字段(航迹号、航班号、扇区编号、时间)同时插入相应的数据。
----当Telephonics发生了插入操作之后,会触发下面这个触发器的执行
go
create trigger TR_Telephonics_Insert on Telephonics
for insert
as
begin
/*声明临时变量*/
declare @TrackCode int --存储航迹号
declare @FlightCode varchar(20) --存储航班号
declare @SectionCode varchar(20) --存储扇区号
declare @FTime datetime --当时时间
/*给临时变量赋相应值*/
select @TrackCode=SelfNum from inserted
select @FlightCode=FlightNum from inserted
select @SectionCode=Section from inserted
select @FTime=TTime from inserted
/*更新航班表中数据*/
insert into FlightAndSection(TrackCode,FlightCode,SectionCode,FTime) values(@TrackCode,@FlightCode,@SectionCode,@FTime)
end
说明:定义临时变量是为了接收Telephonics新插入字段的数据