直接在表下面找到进行创建:
定义
触发器: 在对数据库数据进行操作(增加(insert)、修改(update)、删除(delete))后,可以自动执行的操作
触发器分为两类:instead of 触发器 ,after(for)触发器。
instead of 触发器:在数据更新到数据库之前执行的操作
after(for)触发器:在数据更新到数据后再执行的操作
数据临时载体:inserted和deleted
inserted:存储操作中新增的或者更新的数据
deleted:存储操作中删除的数据
USE [HengliReportWord]
GO
/****** Object: Trigger [dbo].[CreateUpdates] Script Date: 12/23/2020 11:14:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[CreateUpdates] --如果是创建就使用Create
on [dbo].[ReportMain]
after Update --这里是操作状态,其他状态 有insert,delete 则相应的表操作进来的表是 updated,insertd,delectd 在这里找就可以
as
begin
declare @Id int;
select top 1 @Id = Id from inserted order by CreateDate desc ;---在更新操作的表里操作获取操作数据的Id最后一条更新的数据
update ReportMain set updateSd = GETDATE() where Id=@Id
end
注意问题:
状态为:insert ,delete ,update
在 这个sql触发中没有 updated 这个表,一般是在deleted里加入表后再在Inserted里加一条。所以要获取数据库更新条目是insert 或者deleted 的最后一条
第二个实例:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE TRIGGER UpdateVoteCount --设定名称
ON player--针对的表
AFTER UPDATE --针对的操作(update,insert,delete)
AS
BEGIN
declare @VoteCounts int , @VoteNum int,@FalseVoteNum int ,@GiftTicketNum int, @Id int
select @Id = PlayerId,@VoteNum= VoteNum,@FalseVoteNum =FalseVoteNum,@GiftTicketNum =GiftTicketNum from inserted;--针对的操作表
set @VoteCounts = @VoteNum+@FalseVoteNum+@GiftTicketNum;
update Player set VoteCounts = @VoteCounts where PlayerId = @Id;
END
GO