-
触发器作用:
a.触发器通常用于强制业务规则
b.触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束
c.可执行复杂的SQL语句(if/while/case) 可引用其它表中的列
d.触发器定义在特定的表上,与表相关 不能直接调用的存储过程
e.是一个事务(可回滚)
ps:它是一种特殊的存储过程,也具备事务的功能,它能在多表之间执行特殊的业务规则.
触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。
-
--创建触发器语法
create trigger trigger_name
on {table_name|view_name}
{After|Instead of} {insert|update|delete}
as 相应T-SQL语句
-
--触发器 我们用银行转账作为例子
--创建一张银行表
create table bank
(
cardId char(9) primary key,
customerName CHAR(10), --顾客姓名
currentMoney MONEY default(1) check(currentMoney>0) --当前余额
)
go
create table transInfo
(
cardId char(9) references bank(cardId) ,
transType varchar(10) not null,
transMoney MONEY not null
)
go
INSERT INTO bank(cardId,customerName,currentMoney) VALUES('1001 0001','张三',1000)
INSERT INTO bank(cardId,customerName,currentMoney) VALUES('1001 0002','李四',1)
go
-
create trigger trig_Trans
on transInfo
for insert
as
declare @money money
declare @cardId char(9)
select @cardId=cardId,@money=case transType when '支出' then -transMoney else transMoney end from inserted
update bank set currentMoney=currentMoney+@money where cardId=@cardId
if(@@error>0)
begin
raiserror('交易失败',5,1)
rollback
end
else
begin
print('交易成功')
--commit
end
go
-
执行触发器 ,在添加数据这个操作的时候
insert into transInfo values('1001 0001','支取',200)insert into transInfo values('1001 0002','存入',20000)insert into transInfo values('1001 0002','支取',20001)
-
create trigger trig_Bank
on bank
for update
as
declare @newMoney money
declare @oldMoney money
declare @money money
declare @cardId char(9)
select @cardId=cardId,@newMoney=currentMoney from inserted
select @oldMoney=currentMoney from deleted
set @money= abs(@newMoney-@oldMoney)
if(@money>20000)
begin
raiserror('每笔交易金额不能超过20000元,交易失败',6,1)
print('交易金额:'+convert(varchar(20),@money))
rollback
end
else
begin
print('交易成功!交易金额:'+convert(varchar(20),@money))
print('帐号:'+convert(varchar(20),@cardId)+'帐户余额:'+convert(varchar(20),@newMoney))
end
go
-
触发器--删除触发:
delete bank where cardId='1001 0003'
-
触发器触发时:
系统自动在内存中创建deleted表或inserted表
只读,不允许修改;触发器执行完成后,自动删除
-
触发器
最新推荐文章于 2024-04-24 08:40:45 发布