`
laozhou
  • 浏览: 37788 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

触发器编写的例子

阅读更多
USE [ei]
GO
/****** Object:  Trigger [dbo].[TRG_tbAccountKind_INSERT]    Script Date: 03/12/2011 09:07:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: laozhou
-- Create date: 2010,7,16
-- Description: 新增触发器,新增的相关信息保存到message表里面去。
-- =============================================
ALTER TRIGGER [dbo].[TRG_tbAccountKind_INSERT] ON [dbo].[tbAccountKind]
FOR INSERT
AS

DECLARE
  @MES_ID INT,
  @MES_DET_ID INT,
  @V_AccountKindNo INT,
  @V_AccountKindName VARCHAR(MAX),
  @V_ID UNIQUEIDENTIFIER,
  @V_RecordStatus INT,
  @V_UpdateTime DATETIME

BEGIN TRAN

SELECT @V_ID=ID,@V_AccountKindNo=AccountKindNo,@V_AccountKindName=AccountKindName,@V_RecordStatus=RecordStatus,@V_UpdateTime=UpdateTime FROM INSERTED;
    BEGIN
      
     SELECT @MES_ID=SEQ_VALUE FROM SEQUENCE WHERE SEQ_NAME='MES_SEQ'
INSERT INTO UDP_MESSAGES(MES_ID,DB_CON_FLAG,DAT_STA_SET_FLAG,MES_REPORT_TYPE,MES_CREATE_DATETIME,MES_REPORT_STATUS,MES_REPORT_DESC) VALUES(@MES_ID,'ei','tbAccountKind','ADD',GETDATE(),0,'等待上报')
UPDATE SEQUENCE SET SEQ_VALUE=@MES_ID+1 WHERE SEQ_NAME='MES_SEQ'

SELECT @MES_DET_ID=SEQ_VALUE FROM SEQUENCE WHERE SEQ_NAME='MES_DET_SEQ'

INSERT INTO UDP_MESSAGE_DETAIL(MES_DET_ID,MES_ID,MES_DET_UNIQUE,MES_DET_FIELD,MES_DET_VALUE) VALUES(@MES_DET_ID,@MES_ID,1,'AccountKindNo',@V_AccountKindNo);
UPDATE SEQUENCE SET SEQ_VALUE=@MES_DET_ID+1 WHERE SEQ_NAME='MES_DET_SEQ'
INSERT INTO UDP_MESSAGE_DETAIL(MES_DET_ID,MES_ID,MES_DET_UNIQUE,MES_DET_FIELD,MES_DET_VALUE) VALUES(@MES_DET_ID+1,@MES_ID,0,'AccountKindName',@V_AccountKindName);
UPDATE SEQUENCE SET SEQ_VALUE=@MES_DET_ID+2 WHERE SEQ_NAME='MES_DET_SEQ'
INSERT INTO UDP_MESSAGE_DETAIL(MES_DET_ID,MES_ID,MES_DET_UNIQUE,MES_DET_FIELD,MES_DET_VALUE) VALUES(@MES_DET_ID+2,@MES_ID,0,'ID',@V_ID);
UPDATE SEQUENCE SET SEQ_VALUE=@MES_DET_ID+3 WHERE SEQ_NAME='MES_DET_SEQ'
INSERT INTO UDP_MESSAGE_DETAIL(MES_DET_ID,MES_ID,MES_DET_UNIQUE,MES_DET_FIELD,MES_DET_VALUE) VALUES(@MES_DET_ID+3,@MES_ID,0,'RecordStatus',@V_RecordStatus);
UPDATE SEQUENCE SET SEQ_VALUE=@MES_DET_ID+4 WHERE SEQ_NAME='MES_DET_SEQ'
INSERT INTO UDP_MESSAGE_DETAIL(MES_DET_ID,MES_ID,MES_DET_UNIQUE,MES_DET_FIELD,MES_DET_VALUE) VALUES(@MES_DET_ID+4,@MES_ID,0,'UpdateTime',@V_UpdateTime);
UPDATE SEQUENCE SET SEQ_VALUE=@MES_DET_ID+5 WHERE SEQ_NAME='MES_DET_SEQ'

END
COMMIT TRAN;
    RETURN;

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    触发器编写例子

    ### 触发器编写知识点详解 #### 一、触发器概念 触发器是SQL Server数据库中的一种特殊存储过程,它会在特定的事件(如插入、更新或删除数据)发生时自动执行。触发器用于实现复杂的数据完整性规则和业务逻辑,确保...

    触发器例子

    3. 编写触发动作:这是触发器执行的具体操作,可以是额外的INSERT、UPDATE或DELETE语句,甚至可以调用存储过程。 4. 创建触发器:使用CREATE TRIGGER语句在数据库中定义触发器。 需要注意的是,虽然触发器提供了...

    oracle中记录用户登录信息的触发器的例子

    首先,我们需要创建一个用于存储登录信息的表`logon_table`,然后编写一个触发器`logon_trigger`,当用户登录数据库时触发该触发器。 1. **创建表**: 使用`create table`语句创建表`logon_table`,包含以下字段...

    触发器的一个例子触发器的一个例子

    - **自动执行业务逻辑**:通过触发器,可以自动化地执行复杂的业务逻辑,无需手动编写额外的程序代码来更新相关表。 - **错误处理**:使用`ISNULL()`函数避免了可能因字段为空而导致的错误,增强了系统的健壮性。 #...

    触发器的入门例子加注释

    ### 触发器入门例子详解 #### 一、触发器简介 触发器是一种特殊类型的存储过程,当在数据库中执行特定事件(如插入、更新或删除数据)时自动执行。触发器可以用来确保数据完整性,并且可以执行比简单约束更复杂的...

    sql 触发器使用例子

    SQL触发器是数据库管理系统中的一种特殊程序,它在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动...在使用触发器时,理解`INSERTED`和`DELETED`表的作用至关重要,这能帮助我们更好地编写和维护触发器逻辑。

    数据库_SQL触发器实例讲解

    以下将通过两个具体的例子来深入理解触发器的工作原理及其应用。 ##### 示例1:维护学生与借书记录之间的关联 考虑有两个表:`Student`(学生表)和`BorrowRecord`(学生借书记录表)。为了确保当更新学生信息时,...

    触发器做抽奖实例 ppt

    最后,PPT可能提供了一个逐步的指南,从创建数据库表结构,编写触发器代码,到测试和调试整个系统。这个过程可能涉及到SQL语句的编写,例如CREATE TRIGGER,以及如何在PPT中模拟和展示这些操作。 总的来说,这个...

    vivado下基于VHDL的d触发器

    在这个例子中,`entity dff`定义了D触发器的结构,包括输入(clk, d)和输出(q, qn)。`architecture Behavioral`描述了D触发器的行为,其中的`process (clk)`关注时钟信号的变化。`rising_edge(clk)`函数检测时钟...

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

    在这个例子中,我们创建了两个表,testAccount(客户表)和testProject(项目表),并设计了一个AFTER INSERT触发器T_AutoNumber,当在testProject表中插入新的项目时,自动生成项目编号。项目编号由"PJ-客户编号-...

    SqlServer触发器调用WebService

    在这个例子中,触发器`DingTalkSendOAMsg`是在表`TableName`上发生插入操作后触发。 - **WebService的URL构建**:通过变量`@UrlAddress`和`@FunName`来构建完整的URL。这里的`@UrlAddress`是WebService的基础URL,...

    在DB2中创建第一个触发器

    3. **编写触发器代码**:使用DB2的SQL DDL(数据定义语言)语句来创建触发器。 4. **测试触发器**:在安全的测试环境中验证触发器的功能,确保其按预期工作。 ### 实例:创建过账触发器 假设我们有一个银行账户表`...

    SqlServer触发器写法案例

    下面通过一个具体的例子来详细了解如何编写一个触发器。 ##### 案例背景 假设我们有一个名为`OrderBook`的表,其中包含订单信息,以及一个名为`Categories`的表,用于存储不同类别的信息。每当向`OrderBook`表中...

    EDA VHDL D触发器

    本主题主要探讨的是如何使用VHDL来编写D触发器,这是一种基础的数字电路元件,广泛应用于数据处理和时序逻辑系统中。 D触发器是一种单稳态边沿触发的存储单元,它的特点是在时钟脉冲的上升沿或下降沿到来时,其输出...

    SQL触发器的使用方法,

    触发器的编写涉及对这两张临时表的操作。在UPDATE触发器中,通常会比较Deleted表和Inserted表来确定哪些字段发生了变化,并据此进行相应的操作。在DELETE触发器中,会根据Deleted表中的信息执行删除操作的扩展逻辑。...

    触发器和用户自定义函数

    在这个例子中,触发器会在插入数据到`cl_sched`表前运行,如果`ending`字段为空,它会自动将`starting`字段的值加上一小时,然后赋值给`ending`。 **后触发器示例**: ```sql CREATE TRIGGER audit_emp_sal AFTER ...

    oracle触发器语法要点

    然后创建一个用于存储删除数据的日志表,并编写触发器来捕捉删除操作。 ```sql CREATE TABLE deleted_employee_log ( id NUMBER(11), name VARCHAR(50), deletion_date DATE ); CREATE OR REPLACE TRIGGER log_...

    EDA的D触发器的程序

    本文将深入探讨一个基于VHDL语言编写的D触发器程序,包括其基本原理、实现方法以及关键代码片段的分析。 #### 二、D触发器的基本概念 D触发器是一种最基本的同步触发器类型,它有一个数据输入端D和一个时钟输入端...

    小猪专用 触发器小猪专用 触发器

    触发器的编写通常使用SQL语言,其中包含BEGIN、END等关键字来定义触发器的执行逻辑。在SQL中,我们可能会看到如下的触发器定义: ```sql CREATE TRIGGER trg_Customs_Audit AFTER INSERT ON Customs_Database.Table...

    Mysql触发器介绍

    触发器的概念最早出现在 MySQL 5.0 版本中,这一特性使得开发者能够编写自动化的数据库操作逻辑,用于响应特定的数据库事件,如插入、更新或删除记录等。在实际应用中,例如凤巢系统、北斗系统以及哥伦布系统等大型...

Global site tag (gtag.js) - Google Analytics