`
raymond.chen
  • 浏览: 1437020 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SqlServer触发器的应用

 
阅读更多

更新事务类似于在删除之后执行插入;首先旧行被复制到 deleted 表中,然后新行被复制到触发器表和 inserted 表中。

 

1.插入操作(Insert)

      Inserted表有数据,Deleted表无数据

2.删除操作(Delete)

      Inserted表无数据,Deleted表有数据

3.更新操作(Update)

      Inserted表有数据(新数据),Deleted表有数据(旧数据)

 

一、insert触发器

create trigger tr_COMMISSIONINFO_INSERT on COMMISSION_INFO_ 
for insert 
as 
begin 
	declare @COMMISSIONID varchar(20),@DATE datetime  
	set @COMMISSIONID=(select ID_ from INSERTED) 
	set @DATE=getdate()
	insert into COOPERATE_YEARS_(COMMISSION_ID_, CONTRACT_START_DATE_, RE_CONTRACT_START_DATE_) VALUES(@COMMISSIONID, @DATE, @DATE) 
end

 

二、update触发器

create trigger tr_COMMISSIONINFO_UPDATE on COMMISSION_INFO_ 
for update 
as 
begin 
	declare @COMMISSIONID varchar(20), @OLD_COMM_CATEGORY int, @NEW_COMM_CATEGORY int, @DATE datetime  
	set @COMMISSIONID=(select ID_ from INSERTED)
    set @OLD_COMM_CATEGORY=(select COMM_CAGEGORY_ from DELETED)
    set @NEW_COMM_CATEGORY=(select COMM_CAGEGORY_ from INSERTED)
	set @DATE=getdate()
    if((@OLD_COMM_CATEGORY<103 or @OLD_COMM_CATEGORY>106) and (@NEW_COMM_CATEGORY>=103 and @NEW_COMM_CATEGORY<=106))
    begin
        if exists(select 1 from COOPERATE_YEARS_ where COMMISSION_ID_=@COMMISSIONID)
        begin
            update COOPERATE_YEARS_ set RE_CONTRACT_START_DATE_=@DATE where COMMISSION_ID_=@COMMISSIONID
        end
        else
        begin
            insert into COOPERATE_YEARS_(COMMISSION_ID_, CONTRACT_START_DATE_, RE_CONTRACT_START_DATE_)VALUES(@COMMISSIONID, @DATE, @DATE) 
        end
    end
end 

 

create trigger [TG_SIMCARDRESOURCE_UPDATE] on [dcms_hy15].[SIM_CARD_RESOURCE_]   
for update    
as    
begin  
	declare @OLD_LOCKED varchar(20), @NEW_LOCKED varchar(20)    
    set @OLD_LOCKED=(select IS_LOCKED_ from DELETED)   
    set @NEW_LOCKED=(select IS_LOCKED_ from INSERTED)  
	if(@NEW_LOCKED='N')
	begin
		update dcms_hy15.SIM_CARD_RESOURCE2_ set org_id_=b.org_id_,commission_id_=b.commission_id_,
			packer_=b.packer_,amount_=b.amount_,is_locked_=b.is_locked_,
			locked_request_=b.locked_request_,plan_commission_=b.plan_commission_,
			msisdn_=b.msisdn_,big_box_id_=b.big_box_id_,little_box_id_=b.little_box_id_,
			zha_id_=b.zha_id_,is_ready_overdue_=b.is_ready_overdue_,
			is_warning_=b.is_warning_,input_date_time_=b.input_date_time_,
			sales_date_time_=b.sales_date_time_,active_date_=b.active_date_,
			status_date_=b.status_date_,wait_back_date_=b.wait_back_date_,
			call_back_date_=b.call_back_date_,is_integral_=b.is_integral_,
			is_active_=b.is_active_,request_id_=b.request_id_,
			status_=b.status_,life_status_=b.life_status_,
			original_box_=b.original_box_,original_case_=b.original_case_,
			original_package_=b.original_package_,old_card_=b.old_card_,
			last_updated_stamp_=b.last_updated_stamp_,last_updated_tx_stamp_=b.last_updated_tx_stamp_
		from dcms_hy15.SIM_CARD_RESOURCE2_ a,INSERTED b
		where a.id_=b.id_
	end
end 

 

3
0
分享到:
评论

相关推荐

    SQLSERVER触发器插入数据

    ### SQL Server 触发器知识点解析 ...通过以上内容的解析,我们可以了解到SQL Server触发器的基本使用方法及其在实际开发中的应用场景。触发器作为一种强大的工具,能够帮助开发者轻松地维护数据库的完整性和一致性。

    第05节:SQLServer触发器Demo源代码.rar

    这个资源“第05节:SQLServer触发器Demo源代码.rar”很可能是包含了一个C#项目,该项目演示了如何在应用程序中创建、使用和管理SQL Server触发器。通过学习和理解这些示例代码,开发者可以更好地掌握在C#环境中操作...

    SqlServer触发器写法案例

    ### SqlServer触发器详解与案例分析 #### 一、触发器概述 触发器是一种特殊类型的存储过程,它被定义为当特定的事件(如数据的插入、更新或删除)发生时自动执行。Sql Server 中的触发器可以用来强制业务规则或者...

    SQLServer触发器实现不同服务器数据同步.pdf

    * SQL Server 触发器的概念和应用 * 分布式事务处理服务(MSDTC)的概念和应用 * 链接服务器的创建和应用 * 存储过程的创建和应用 * 作业的创建和应用 这些知识点都是 SQL Server 数据库管理和开发中非常重要的内容...

    sql server触发器.rar

    SQL Server触发器是数据库管理系统中一种非常重要的特性,它允许开发者在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时执行自定义的SQL代码。这些操作被称为触发事件,而触发器则是对这些事件的响应。理解并...

    一个SqlServer触发器的Delphi应用源代码..rar

    本资源“一个SqlServer触发器的Delphi应用源代码..rar”显然是一个结合了这两个技术的实例,旨在帮助开发者了解如何在Delphi中使用SQL Server触发器。 触发器是SQL Server中的一个重要特性,它是一种存储过程,由...

    sqlserver触发器例子

    ### SQL Server 触发器详解 #### 一、触发器概念 触发器是SQL Server中一种特殊的存储过程,其特点在于不能被显式地调用,而是当对特定表进行数据操作(如插入、更新或删除)时自动激活。通过这种方式,触发器能够...

    SQL SERVER 触发器视频讲解

    在SQL Server中,触发器是一种特殊的存储过程,它在数据库中的特定事件发生时自动执行,如数据插入、更新或删除操作。本视频讲解将深入探讨触发器的创建、编辑、修改及其功能,帮助用户更好地理解和应用这些技术。 ...

    sqlserver 创建触发器 远程服务器相应执行SQL语句

    ### SQL Server 创建触发器实现远程服务器相应执行SQL语句 #### 概述 本文将详细介绍如何在SQL Server中创建触发器来实现当本地数据库发生数据插入时,在远程服务器上相应地执行SQL语句,实现数据同步。这通常用于...

    新增用户就发送邮件和手机短信的SqlServer触发器

    根据给定的文件信息,我们可以深入探讨如何在SQL Server中创建一个触发器,该触发器在新用户添加到系统时自动发送电子邮件和短信通知。这一技术应用广泛于各种需要即时通知用户注册确认、账户激活或密码重置的场景中...

    使用SQL Server触发器实现数据表的级联更新.pdf

    "使用SQL Server触发器实现数据表的级联更新" SQL Server触发器是数据库中的一种机制,用于实现数据的级联更新。触发器可以被看作是一种特殊的存储过程,可以在数据库事件的触发下执行复杂的SQL语句,从而实现比...

    Sqlserver触发器例子

    Sqlserver 触发器例子 Sqlserver 触发器是指在 Sqlserver 数据库中,对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。常见的触发器有三种:分别应用于 Insert、Update、...

    SQL Server中多行数据更新的触发器应用研究.pdf

    在讨论SQL Server中多行数据更新的触发器应用研究时,首先需要了解触发器的定义以及其工作原理。触发器是数据库管理系统中的一种特殊存储过程,它能自动响应数据库中的数据操纵事件,比如插入、更新或删除操作。...

    sqlserver 触发器学习(实现自动编号)

    在SQL Server中,触发器是一种特殊的存储过程,它在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行,以实现复杂的数据完整性规则或业务逻辑。本篇将深入探讨触发器的基本概念、类型、分类及如何实现...

    利用SQLServer触发器实现表跟踪.pdf

    本篇文章详细介绍了如何通过SQL Server触发器技术创建数据跟踪日志,确保数据安全,并提供了一个应用实例,即利用SQL Server 2000数据库触发器来实现对数据表变化的跟踪。 首先,触发器在数据表发生特定操作时自动...

    关于SqlServer 触发器的PPT

    SQL Server的触发器是一种特殊的存储过程,它在特定的数据操作事件(INSERT、UPDATE或DELETE)发生时自动执行,用于扩展数据库系统的功能,实现更复杂的业务逻辑。触发器可以帮助确保数据完整性,实现级联操作,或者...

    SQL server 触发器,在触发Merge过程中,逐行触发的解决办法 用group by 避免是一次触发中的多行更新或删除。

    在SQL Server中,触发器是一种数据库对象,它可以在数据更改(INSERT、UPDATE或DELETE)时自动执行。在处理大量数据的Merge操作时,触发器可能会一次性处理多行,这可能导致性能问题或者不符合预期的行为。标题和...

    SQL SERVER触发器在学生管理系统中应用.pdf

    SQL SERVER触发器在学生管理系统中的应用 本文主要介绍了 SQL SERVER 触发器在学生管理系统中的应用,触发器是一种重要的数据库技术,可以保证数据的完整性和一致性。本文从触发器的作用、类型、工作原理等方面进行...

    利用SQL Server触发器实现表的历史修改痕迹记录

    先简单描述一下SQL Server触发器。 SQL Server触发器的inserted和deleted SQL Server为每个触发器都创建了两个专用虚拟表:inserted表和deleted表。这两个表由系统来维护,他们存在于内存中,而不是在数据库中。这两...

Global site tag (gtag.js) - Google Analytics