触发器解析

xiaoxiao2021-02-28  141

表结构如下

SELECT TOP 1000 [id]       ,[cardID]       ,[currentMoney]   FROM [pubs].[dbo].[bank]

SELECT TOP 1000 [id]       ,[transType]       ,[transMoney]       ,[cardID]   FROM [pubs].[dbo].[bank_czmoney]

一、创建插入

CREATE trigger [dbo].[trig_bank_insert] on [dbo].[bank_czmoney]     for insert     as     declare @type nvarchar(50),@xmoney money,@cardid nvarchar(50)          begin         select @cardid=cardID,@type=transType,@xmoney=transMoney from inserted --取插入的数据         IF(@type = '收入')             update bank set currentMoney=(currentMoney + @xmoney) where cardID=@cardid           else             update bank set currentMoney=(currentMoney - @xmoney) where cardID=@cardid               end             GO

二、创建删除

CREATE TRIGGER trig_bank_delete       ON bank_czmoney FOR DELETE         AS        declare @id int      declare @transType nvarchar(50)      declare @transMoney money      declare @cardID nvarchar(50)      select @id = id, @transType = transType,@transMoney=transMoney,@cardID=cardID from deleted --取删除的数据           IF not exists (SELECT * FROM sysobjects where name = 'backupTable')           select * into backupTable from bank_czmoney           DELETE FROM backupTable           insert into backupTable (id,transType,transMoney,cardID) VALUES (@id,@transType,@transMoney,@cardID)  --插入另一个表              三、创建修改

CREATE trigger trig_bank_update on bank_czmoney     for update     as     declare @type nvarchar(50),@xmoney money,@cardid nvarchar(50)          begin                  select @cardid=cardID,@type=transType,@xmoney=transMoney from bank_czmoney         IF(@type = '收入')             update bank set currentMoney=(currentMoney + @xmoney) where cardID=@cardid           else             update bank set currentMoney=(currentMoney - @xmoney) where cardID=@cardid               end              backupTable 表内容(记录整张表的信息,对比前后发现删除了哪条记录):

转载请注明原文地址: https://www.6miu.com/read-17687.html

最新回复(0)