表结构如下
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 表内容(记录整张表的信息,对比前后发现删除了哪条记录):