欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

触发器实现当一个表中字段改变时同时改变另一个表中字段值

程序员文章站 2022-07-13 14:11:21
...

触发器实现当一个表中字段发生变化时同时改变另一个表中字段

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新插入字段的数据

3.运行结果

触发器实现当一个表中字段改变时同时改变另一个表中字段值














相关标签: 触发器 SQL