Sql Server 触发器的应用

Sql Server 触发器:指的是 在进行  Insert 、Update、Delete时 所执行的操作

我们可以在进行增删改操作的同时对其他数据进行操作。其实触发器算是一种存储过程,只不过执行的机制 只是在进行增删改操作时执行;

  应用场景:

   需求: 由于业务的需要,需要做一个统计报表,根据角色不同展示相应的四个系统的设备数据;

       如果按照查询各个库中设备的数据汇总到一块,这样查询效率很低;

  解决方案:

  • 创建一个设备统计表;
  • 使用SQL Server触发器,每增加、删除 设备数据时,同时触发一条 新增或者更新该设备数量的操作,往我们创建的设备统计表插入或更新数据即可;这样,我们直接根据统计表的数据去展现就好了。

  具体操作(这只是一个Demo,大家可以根据业务拓展)

  

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER Trigger_Device_Count ON dbo.Device
    FOR INSERT, DELETE
AS
    BEGIN
        DECLARE @UserCode NVARCHAR(50)
        DECLARE @Count INT
        DECLARE @IsHave INT

        --判断该触发操作是Insert 还是Delete ,获取UserCode
        SELECT  @UserCode = UserCode
        FROM    Inserted
        IF @UserCode IS NOT NULL
            BEGIN
                SET @UserCode = @UserCode
            END
        ELSE
            BEGIN
                SELECT  @UserCode = UserCode
                FROM    Deleted
            END

        --根据得到的UserCode  获取最新的设备总数
        SELECT  @Count = COUNT(0)
        FROM    dbo.Device
        WHERE   UserCode = @UserCode

        --查询统计表是否存在该设备数据,没有则新增,有则更新
        SELECT  @IsHave = COUNT(0)
        FROM    dbo.[Statistics] 

        IF @IsHave <= 0
            BEGIN
                INSERT  INTO dbo.[Statistics]
                        ( Id, DeviceCount, UserCode )
                VALUES  ( NEWID(), -- Id - uniqueidentifier
                          @Count, -- DeviceCount - int
                          @UserCode  -- UserCode - nvarchar(50)
                          )
            END
        ELSE
            BEGIN
                UPDATE  dbo.[Statistics]
                SET     DeviceCount = @Count
                WHERE   UserCode = @UserCode
            END
    END
GO

设备表Device、统计表 Statistics

CREATE TABLE [dbo].[Device](
    [Id] [UNIQUEIDENTIFIER] NOT NULL,
    [DeviceCode] [NVARCHAR](50) NULL,
    [DeviceType] [NVARCHAR](50) NULL,
    [UserCode] [NVARCHAR](50) NULL
) ON [PRIMARY]

GO

CREATE TABLE [dbo].[Statistics](
    [Id] [UNIQUEIDENTIFIER] NOT NULL,
    [DeviceCount] [INT] NULL,
    [UserCode] [NVARCHAR](50) NULL
) ON [PRIMARY]

GO

原文地址:https://www.cnblogs.com/HubertBiyo/p/9649589.html

时间: 2024-08-12 01:27:15

Sql Server 触发器的应用的相关文章

SQL Server触发器

触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2005中触发器可以分为两类:DM

如何编写sql server 触发器详解

在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程.常见的触发器有三种:分别应用于Insert , Update , Delete 事件. 编写之前要了解一个关键知识.触发器用到的两个临表:Deleted , Inserted . Deleted 和 Inserted 分别存储触发事件表的"旧的一条记录"和"新的一条记录". 一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧

SQL Server 触发器 转http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html

SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触 发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2

15、SQL Server 触发器

SQL Server 触发器 触发器是一种特殊的存储过程,只有当试图用数据操作语言DML来修改数据时才会触发,DML包含对视图和表的增.删.改. 触发器分为DML触发器和DDL触发器,其中DML触发器会对数据表,视图进行insert.update.delete的时候触发.DDL则是create.alter.drop等时触发. DML触发器又分为after(之后触发)和insert of(之前触发)触发器. 如果在创建触发器的时候不指定类型,则默认是after触发器. 触发器有两个虚拟的临时表:插

自己写的sql server触发器练练--高手请您跳过吧

set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER TRIGGER [insertReplyToic] ON [dbo].[bbsReplyTopic] AFTER insertAS BEGIN --SET NOCOUNT ON; -- Insert statements for trigger here declare @uid int,@topicId int,@Rcontent nvarchar(max),@Rtime datetime,@c

SQL Server触发器创建、删除、修改、查看示例步骤

SQL Server触发器创建.删除.修改.查看示例步骤 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表.这两个表. 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束.    

(转)SQL Server 触发器

SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 20

浅谈 Sql Server 触发器

一.触发器概念 1.1.触发器特征         1.1.1.触发器是在对表进行增.删.改时,自动执行的存储过程.触发器常用于强制业务规则,它是一种高级约束,通过事件进行触发而被执行.         1.1.2.触发器是一个特殊的事务单元,可以引用其他表中的列执行特殊的业务规则或数据逻辑关系.当出现错误时,可以执行rollback transaction操作将整个触发器以及触发它的T-SQL语句一并回滚(不需显示声明begin transaction).         1.1.3.每个触发

SQL SERVER 触发器介绍

什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create.alter.drop语句. DML触发器分为: 1. a