我是靠谱客的博主 称心糖豆,最近开发中收集的这篇文章主要介绍SqlServer触发器的格式+小例子解析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

触发器基本语法格式:

create trigger tri_name        
on table                                
for insert/update/deleted    
as

SQL code

触发器基本语法解析:

create trigger tri_name        //(tri_name:自定义触发器的名称)
on table                                //(table:触发器的表名)
for insert/update/deleted    //(触发器类型:insert插入数据触发,update更新数据触发,deleted删除数据触发)

as

declare @kssj datetime         //(定义一个变量,做中间处理)
declare @sqbh char(40)

select @kssj = kssj,@sqbh = sqbh from inserted

                                                //插入数据时,插入的数据在表inserted

                                                //更新数据时,更新后的数据在表inserted,更新前的数据在表中deleted

                                                //删除数据时,删除的数据在表deleted

                                                //不同的操作可以取出不同的中间数据做处理,案例中是取出插入的数据

update table2 set isks = 1,kksj = @kssj where sqbh = @sqbh

                                                //根据中间处理做相应操作,案例的处理为“将插入的值同步更新到另一个表

触发器的限制:(触发器是一种特殊的储存过程)

一个表最多只能有三个触发器,insert,update,delete

●每个触发器只能用于一个表

●不能对视图、临时表创建触发器

●Truncate table能删除表,但不能触发触发器

●不能将触发器用于系统表

合理地使用触发器对性能的影响是正面的。在设计和使用触发器时,经常地用sp_depends命令了解对象所关联的触发器是有好处的,该命令能列出触发器影响的所有对象、表和视等。

在定义几类数据库对象的时候,对存储过程、索引和触发器要给予特别的注意,尤其存储过程,它设计的好坏对数据库性能的影响很大。

说明:Sybase触发器使用的两个测试表:Deleted表和Inserted表,它们都是临时表,其结构与触发器的基表结构相同,用来存放与修改相关的数据行。

常见的触发器有三种:分别应用于Insert,Update,Delete事件。

使用触发器的优点:

触发器是自动的,它们在对表的数据作了任何修改之后立即被激活。

触发器可以通过数据库中的相关表进行层叠更改。例如,可以在 titles 表的 title_id 列上写入一个删除触发器,以使其它表中的各匹配行采取删除操作。

触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。与 CHECK 约束不同的是,触发器可以引用其它表中的列。


小例子:

USE [SmartMeter]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER  TRIGGER [dbo].[trg_FreezeDay_Insert]
   ON  [dbo].[FreezeDay]
   FOR Insert  
AS 
BEGIN
  
   DECLARE  @meterid varchar(40),@currdate datetime,@Currqty numeric(18,2),@currcbrq datetime
   
   SELECT @meterid=meterid,@currdate=freezedate,@Currqty=FreezeNumber,@currcbrq=ReadDate
   FROM inserted 
 
   begin
     delete from [gsdata].[dbo].[ChaoBiaoInfo] where YHBH=@meterid and CBRQ=@currcbrq and BYCBS=@Currqty and cbny=@currdate
     insert into [gsdata].[dbo].[ChaoBiaoInfo]([YHBH], [CBRQ], [BYCBS], [cbny])
     values(@meterid,@currdate,@Currqty,REPLACE( left(@currdate,7),'-',''))
  end

END
GO

最后

以上就是称心糖豆为你收集整理的SqlServer触发器的格式+小例子解析的全部内容,希望文章能够帮你解决SqlServer触发器的格式+小例子解析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部