标签:
CREATE TRIGGER trigger_name ON table_name [WITH ENCRYPTION] FOR [DELETE, INSERT, UPDATE] AS T-SQL语句 GO
/*创建insert触发器,在上网记录表recordInfo上创建插入触发器*/ create trigger tr_insert_recordInfo on recordInfo for insert as /*定义变量,用于临时存储插入的会员号、电脑编号和卡的编号*/ declare @cardId char(10) declare @PCId int declare @CardNumber char(10) /*从inserted临时表中获取插入的记录行的信息,包括电脑的编号、卡的编号*/ select @PCId=PCId,@cardId=CardId from inserted /*根据电脑编号修改电脑的使用状态*/ update PCInfo set PCUse=1 where PCId=@PCId /*根据卡的编号查询会员号*/ select @CardNumber=CardNumber from cardinfo where CardId=@cardid /*显示上机成功的信息*/ print ‘上机成功!会员号是:‘+@CardNumber+‘机器号是:‘+convert(char(10),@PCId) go ----插入测试数据,会员号为的上机 set nocount on --不显示sql语句影响的记录行数 declare @CardId int ---声明一个存储卡的编号的变量 ---根据会员号查处卡的编号 select @cardId=cardid from cardinfo where cardNumber=‘c001‘ ---向recordInfo表中插入一条记录信息,卡的编号、电脑编号和上机时间 insert into recordInfo(cardId,PCId,beginTime) values(@cardId,1,getDate()) ----查看结果 select * from recordInfo select * from PCInfo
---创建delete触发器,在上网记录表RecordInfo上创建删除触发器 create trigger tr_delete_recordInfo on recordInfo for delete as if exists(select * from sysobjects where name=‘backRecordInfo‘) ----如果backrecordInfo表存在,就添加记录即可 insert into backRecordInfo select * from deleted else ----创建backRecordInfo表,从deleted中获取被删除的数据 select * into backRecordInfo from deleted print‘backRecordInfo表备份数据成功,备份表中的数据为:‘ select * from backRecordInfo go -------关键代码------ ----测试delete触发器,删除数据 set nocount on delete from recordInfo ---查看结果 print‘记录表中的数据为:‘ select * from recordInfo
-------关键代码------ create trigger tr_update_recordInfo on recordInfo for update as declare @beforePCId int declare @afterPCId int select @beforePCId =PCId from deleted select @afterPCId=PCID from inserted ---根据电脑编号修改使用状态----- ---根据以前使用的电脑编号把电脑的使用状态改为: update PCInfo set PCUse=0 where PCId=@beforePCId ---根据现在使用的电脑编号把电脑的使用状态改为: update PCInfo set PCUse=1 where PCId=@afterPCId ----显示电脑换机成功 print‘换机成功!从‘+convert(varchar(10),@beforePCId)+‘号电脑换到‘+convert(varchar(10),@afterPCId)+‘号电脑‘ go /*测试update触发器,修改电脑编号*/ --显示更改前,记录表中的数据 print‘更改前,记录表中的数据‘ select * from recordInfo --显示更改前,电脑表中的数据 print‘更改前,电脑表中的数据‘ select * from PCInfo set nocount on ---把电脑号为1的改为2 update recordInfo set PCId=2 where PCId=1 ---查看结果 print‘更改后,记录表中的数据‘ select * from recordInfo print‘更改后,电脑表中的数据‘ select * from PCInfo
---创建update触发器,在上网记录表recordInfo上创建修改(列)触发器 create trigger tr_updateColum1_recordInfo on recordInfo instead of insert as declare @cardbalance int --声明用于存储用户余额的变量 declare @CardId int --声明用于存储用户卡的编号的变量 declare @PCId int --声明用于存储电脑编号的变量 ---inserted临时表中获取插入的记录行信息,包括电脑编号、卡的编号 select @cardId=cardId,@PCId=PCId from inserted select @cardbalance=cardBalance from cardInfo where CardId=@CardId print‘您的余额为:‘+convert(varchar(10),@cardBalance) ---打印余额信息 if(@cardBalance<2) ---判断余额多少,看能否正常上机 print‘余额小于元,不能上机。请尽快充值!‘ else ----根据电脑的编号修改电脑的使用状态更改为正在使用 update PCInfo set PCUse=1 where PCId=@PCId ----向recordInfo表插入上机记录 insert into recordInfo(cardId,PCId,beginTime)values(@CardId,@PCId,getdate()) print‘上机成功‘ -------关键代码------ set nocount on declare @cardId int ---声明一个存储卡的编号的变量 ---根据会员号查出卡的编号 select @cardId=cardId from cardInfo where cardNumber=‘c001‘ ----向recordInfo表中插入一条记录信息,卡的编号、电脑的编号和上机时间 insert into recordInfo(cardId,PCId,beginTime)values(@cardId,1,getdate()) select * from recordInfo select * from PCInfo
标签:
原文地址:http://blog.csdn.net/fy_hanxu/article/details/51261474