创建数据库触发器 基本操作方式

直接在表下面找到进行创建:在这里插入图片描述
定义

触发器: 在对数据库数据进行操作(增加(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值