`
流星剑
  • 浏览: 92089 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

触发器的使用实例

Go 
阅读更多
假设有如下两张表
create table card
(
 id int primary key, --卡号
 cardName varchar(20),--卡名
 banlance int           --卡上金额
)
create table translate 
(
 Tid int primary key identity(1,1), --交易号
 id int,                           --卡号
date datetime,                      --交易时间
Ttype varchar(4),                 --交易类型(存或取)
salary money                      --交易金额
)

--after/for触发器(在向card更新数据时自动选出所有数据)
create trigger test
on card after update
as
select *from card

--inserted表临时保存插入的数据(在translate交易表中发生交易时,card表中的金额相应会自动变化)
if object_id('ex') is not null
drop trigger ex
go
create trigger ex
on translate for insert
as
declare @id int
declare @count money
declare @type varchar(4)
select @id=id,@count=salary,@type=Ttype from inserted
if @type='存'
update card set banlance=banlance+@count where id=@id
else 
update card set banlance=banlance-@count where id=@id
--deleted表存放临时数据(删除card中相关信息时,自动删除translate中的相关卡号信息)
if object_id('del') is not null
drop trigger del
go
create trigger del
on card for delete
as
declare @id int
select @id=id from deleted
delete from translate where id=@id

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics