`

触发器判断插入、删除和更新操作

阅读更多

测试环境:MS SQL Server 2005

创建触发器的简单语句:

CREATE TRIGGER triggerName   ON  tableName AFTER/FOR  INSERT,DELETE,UPDATE AS

其中insert是插入操作,delete是删除操作,update是更新操作,这三个操作是可选的。有时候我们需要根据不同的操作执行不同的方法,这就需要判断当前的操作是insert,update,还是delete。

可以根据触发器维持的两个表的状态来判断:Inserted表和Deleted。这是两个临时表(也可以说是虚拟表),当执行不同的操作时,它们有不同的数据状态:

一、插入操作(INSERT)时:Inserted表有数据,Deleted表无数据 。
二、删除操作(DELETE)时:Inserted表无数据,Deleted表有数据 。
三、更新操作(UPDATE)时:Inserted表有数据(新数据),Deleted表有数据(旧数据) 。

所以判断是否insert可以这样子:

if exists(select * from INSERTED)--如果INSERTED表里面存在数据,那么就是insert了
begin
......
end
--或者
if not exists(select * from DELETED)--如果DELETED表里面不存在数据
begin
......
end 

判断删除:

if exists(select * from DELETED)
begin
--或者
if not exists(select * from INSERTED)
begin
......
end 
判断更新,更新的时候,两个表里面都有数据,所以:
if(select count(*) from DELETED)>0 and (select count(*) from INSERTED)>0--两个表的数据数量都大于0
begin
......
end
--或者
if exists(select * from INSERTED) and  exists(select * from DELETED
begin 
......
上面的 这个更新跟当指定的表一有更新就触发,也可以指定某个字段更新时触发,如:
if update(field)--必须加括号,否则会报错
begin
......
end 
这个begin,end有点类似常用的{},有分支判断还是加上比较好,免得乱的自己都看不懂。
分享到:
评论

相关推荐

    [数据库] Navicat for MySQL触发器更新和插入操作1

    - 触发器主要用于增强数据的完整性,执行复杂的业务规则,例如在数据插入、更新或删除时进行额外的验证或联动操作。 2. **触发器创建语法**: - 触发器的创建需要指定四个要素:监视的表(table)、监视的事件...

    判断触发器正在处理的是插入,删除还是更新触发

    以下是如何判断触发器正在处理的是插入、删除还是更新触发。 首先,我们需要了解触发器内部的两个特殊临时表:`INSERTED`和`DELETED`。这两个表是由系统自动创建并维护的,它们在触发器执行过程中扮演关键角色。 1...

    Oracle触发器语法详解

    Oracle 触发器是一种特殊的存储过程,它在插入、删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。触发器可以基于数据库的值使用户具有操作数据库的某种权利,基于...

    sql 在更新某字段后写入日志触发器

    在数据库管理系统(DBMS)中,触发器是一种存储过程,当特定的事件(如数据的插入、更新或删除)发生时自动执行。触发器常用于实现业务逻辑、数据验证或审计跟踪等需求。本篇文章将详细介绍如何在SQL Server中创建一...

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

    这是因为在多行数据更新的场景中,触发器可能需要处理多个相关的数据表,涉及更复杂的逻辑判断和数据操作。在实际应用中,触发器的编写需要非常谨慎和细致,确保触发器的逻辑能够正确处理各种情况,同时也要注意...

    触发器关键在于几个系统表的应用

    这些系统表提供了关于数据库状态和操作历史的详细信息,使得触发器能够实现复杂的业务规则和数据一致性。 1. **系统表的作用**: - 系统表,也称为元数据表,存储了数据库架构和对象的相关信息,包括表的定义、...

    各种触发器和使用规则

    - **数据完整性**:触发器可以帮助确保数据的完整性,防止不符合规则的插入、更新或删除。 - **业务逻辑**:触发器可以执行复杂的业务逻辑,这些逻辑可能在标准SQL语句中难以表达。 - **跨表操作**:通过触发器,...

    借阅触发器.txt

    在IT行业的数据库管理领域,触发器(Trigger)是一种特殊类型的存储过程,用于在特定的数据库操作(如插入、更新或删除记录)发生时自动执行。本文将深入解析一个与图书借阅系统相关的SQL触发器——“借阅触发器”,...

    SQL Server 触发器 表的特定字段更新时,触发Update触发器

    3. `sql触发器`和`update`标签强调了触发器在更新操作中的作用。触发器可以针对特定的DML操作进行定制,确保在这些操作前后执行某些逻辑。 4. `字段`和`更新`标签提示了这个话题是关于数据库表的列(字段)及其值的...

    Oracle触发器操作.pptx

    这两个变量是只读的,不可直接修改,但可以用于触发器内的逻辑判断和操作。 在实践中,使用工具如SQL Developer可以方便地创建、修改、查看、编译和删除触发器。通过案例学习,用户可以掌握如何在SQL Developer中...

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

    触发器是数据库管理系统中的一个重要特性,它允许用户定义响应数据修改(如插入、更新或删除操作)时自动执行的一系列SQL语句。接下来,我们将详细分析该触发器的具体实现及应用场景。 ### 触发器简介 在数据库...

    存储过程和触发器的编程

    用户可以通过调用存储过程来执行一系列复杂的数据库操作,比如数据查询、插入、更新或删除。存储过程的优点包括提高性能(因为编译只需要一次)、减少网络流量(只需传递调用名而不是完整的SQL语句)、增强安全性...

    存储过程和触发器语法详细讲解

    存储过程(Stored Procedure)是一组预先编译好的SQL语句集合,它可以包含数据查询、更新、插入和删除等操作。存储过程的优点在于提高了代码的重用性,减少了网络流量,提高了系统性能,并且能够增强数据库的安全性...

    用触发器实现数据库的完整性

    - **AFTER触发器**:这类触发器在特定的数据操作(如插入、更新或删除)完成后触发。它们只能在表上定义。 - **INSTEAD OF触发器**:这类触发器代替原本的操作执行。它们可以在表上定义,也可以在视图上定义。对于...

    sql中的触发器和分页显示

    此触发器响应三种类型的事件:插入(`INSERT`)、更新(`UPDATE`)和删除(`DELETE`)。 - **声明变量**: - `@DmlTinyInt`用于标记触发器处理的是哪种类型的事件。 - `@RowsDInt`用于记录删除操作中受影响的行数。 - ...

    数据库触发器

    - 触发器可以通过比较`deleted`表和`inserted`表中的数据来判断哪些字段发生了改变,并据此执行相应的操作。 - `deleted`和`inserted`表中的行都是目标表中对应行的副本,这样可以方便地访问更改前后的数据。 **3. ...

    SQL数据库触发器 SQL数据库触发器

    当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSERT 或DELETE。触发器可以查询其它表,而且可以包含复杂的 SQL 语句。它们主要用于强制复杂的业务规则或要求。 触发器的...

    ATM存储和触发器

    触发器是一种特殊类型的存储过程,它会在特定事件发生时自动执行,例如当数据被插入、更新或删除时。触发器可以用来实现复杂的业务逻辑和数据完整性检查。 **2. 触发器的应用场景** - **数据审计**: 记录数据修改...

Global site tag (gtag.js) - Google Analytics