?? 銀行應用觸發器的試驗.txt
字號:
----解決銀行取款問題:當向交易信息表(transInfo)中插入一條交易信息時,我們應自動更新對應帳戶的余額。【使用INSERT觸發器】
create tri_transInfo
on transInfo
for insert
as
declare @type char(4),@outMoney money
declare @myCardID char(10),@balance money
select @type=transType,@outMoney=transMoney,@myCardID=cardID
from inserted ----使用insert觸發器時,inserted表是存放新增記錄的
if (@type='支取')
update bank set currentMoney=currentMoney-@outMoney
where cardID=@myCardID
else
update bank set currentMoney=currentMoney+@outMoney
where cardID=@myCardID
go
----當刪除交易信息表時,要求自動備份被刪除的數據到表backupTable中。【使用DELETE觸發器 】
create trigger tri_delete_transInfo
on transInfo
for delete
as
print '開始備份數據,請稍候....'
if not exists(select * from sysobjects where name='backupTable')
select * into backupTable from deleted
else
insert into backupTable select * from deleted
print '數據備份成功,備份表中的數據為:'
select * from backupTable
go
----跟蹤用戶的交易,交易金額超過20000元,則取消交易,并給出錯誤提示。【使用UPDATE觸發器 】
create trigger trip_update_bank
on bank
for update
as
declare @beforeMoney money,@afterMoney money
select @beforeMoney=currentMoney from deleted
select @afterMoney=currentMoney from inserted
if abs(@afterMoney-@beforeMoney)>2000
begin
print '交易金額:'+convert(varchar(8)),
abs(@afterMoney-@beforeMoney)
raiserror('每筆交易不能超過2萬元,交易失敗',16,1)
rollback transaction
end
go
----交易日期一般由系統自動產生,默認為當前日期。為了安全起見,一般禁止修改,以防舞弊。 【使用UPDATE觸發器】
create trigger trig_update_transInfo
on transInfo
for update
as
if update(transDate)
begin
print '交易失敗....'
raiserror('安全警告:交易日期不能修改,由系統自動產生',16,1)
rollback transaction
end
go
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -