触发器的应用

 在以上部分我们讨论了触发器的优缺点、工作原理以及创建触发器的具体方法。接下来我们将阐述各种不同复杂程度的触发器的应用。

12.9.1 插入型触发器的应用

12.9.1 插入型触发器的应用

    更新型触发器有两种类型:通常意义上的更新型触发器和用于检查列改变的更新型触发器,这主要是因为更新操作可以涉及到数据项。
通常意义上的更新型触发器;
在前面我们已经提到更新操作包括两个部分,先将需更新的内容从表中删除掉,然后插入新值。因此,更新型触发器同时涉及到删除表。和插入表下面结合具体例子来对其进行讨论。


    在有些更新中,更新的内容并不是整个记录,而仅仅是一列或几列,这时就要用到用于检查列改变的更新型触发器。它与通常意义上的触发器不同之处主要表现在它包括以下保留字:

    在用Transaction_SQL 的CREATE TRIGGER 命令创建触发器那部分我们已经给出上述保留字的具体含义。下面我们将给出两个例子,这两个例子分别用到了IF UPDATE(column) 和IF (COLUMNS_UPDATED()。


   

注意:必须首先删除与表title已建立主外键的各关系,上述触发器才能被触发。


12.9.4 嵌套触发器
    当某一触发器执行时,其能够触发另外一个触发器,这种情况称之为触发器嵌套。在MS SQL Server 中触发器能够嵌套至32 层。如果不需要嵌套触发器,可以通过sp_configure选项来进行设置。
    在执行过程中,如果一个触发器修改某个表,而这个表已经有其它触发器,这时就要使用嵌套触发器。



注意:必须删除与sales表已建立的各主外键关系,上面的触发器才能被触发。

时间: 2024-10-18 01:36:31

触发器的应用的相关文章

Sql 触发器

        触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约束.          触发器在数据库里以独立的对象存储,与存储过程不同的是,存储过程通过其他程序来启动运行,而触发器是由一个事件来启动运行.即当某个事件发生时,触发器自动地隐式运行.并且,触发器不能接收参数.         触发器对象定义了触发器的特征和被调用时采取的行动.而这些动作是通过一个或多个SQL语句来实现的.SQL支持

PostgreSQL 自带自增字段 请勿使用触发器或其他手段生成(Like Oracle, MySQL)

在Oracle中,因为不能设置字段的default sequence.nextval,所以如果要设置自增字段,需要使用触发器.例如: create sequence seq; create table test(id int, info text); CREATE OR REPLACE TRIGGER tg1 BEFORE INSERT ON test FOR EACH ROW BEGIN SELECT seq.nextval INTO :new.ID FROM dual; end; 这种方式能

sqlserver 存储过程-关于一个数据库触发器的问题

问题描述 关于一个数据库触发器的问题 请教一个数据库相关的问题 各位大神好,小弟现正使用sqlserver数据库,现有这么一个需求, 需要监视有关 表A 的插入,修改,删除 操作,并需要将新的整条数据形成类似 <tbrecord id="某一行的ID" columnAname="该行的列名为columnAname的值" columnBname="该行的列名为columnAname的 值">tbName(表的名称) 一个xml字符串保存

Oracle中触发器详解

Oracle触发器分类: 1. 语句触发器 2. 行触发器 3. 系统条件触发器 4. 用户事件触发器 5. INSTEAD OF 触发器 1. 语句触发器 是在表上或者某些情况下的视图上执行的特定语句或者语句组上的触发器.能够与INSERT.UPDATE . DELETE或者组合上进行关联.但是无论使用什么样的组合,各个语句触发器都只会针对指定语句激 活一次 .比如,无论update多少行,也只会调用一次update语句触发器. 例子: 需要对在表上进行DML操作的用户进行安全检查,看是否具有

触发器插入问题,急急急!!!!!!!!!

问题描述 触发器插入问题,急急急!!!!!!!!! 有表test1(字段id,time),有表test2(字段id,time),如何写触发器将test1表中最新一条数据插入到表test2中 解决方案 建议下载工具,Navicat Premium,可以连接多种数据,在工具中,有专门写的触发器的地方.![图片说明](http://img.ask.csdn.net/upload/201503/11/1426060243_656360.png)

一个简单的oracle触发器

    业务需要,写一个触发器    在tab_user_detail表增加一条数据后,往tab_user表增加一条记录    create trigger tri_user_insert    after insert on tab_user_detail    for each row    begin    insert into tab_user (USER_ID,USER_NAME,USER_PWD,USER_CUSTOMERNAME,USER_PHOTOS) values (:new

sql update 触发器 可获得被update的行的信息

复制代码 代码如下: create trigger TgName on tb for update as if update(recommend) begin update tb set commenddate=(getdate()) from tb inner join inserted on tb.vlistid=Inserted.vlistid end recommend表示被更新的字段. 关键在于Inserted表 触发器语句中使用了两种特殊的表:deleted 表和 inserted

SQL Server 2005中的DDL触发器的实现

server|触发器     SQL SERVER 2005中,新增加了许多新的特性,其中的DDL触发器是个不错的选择,根据资料初步学习如下,现整理之:    在sql server 2000中,只能为针对表发出的 DML 语句(INSERT.UPDATE 和 DELETE)定义 AFTER 触发器.SQL Server 2005 可以就整个服务器或数据库的某个范围为 DDL 事件定义触发器.可以为单个 DDL 语句(例如,CREATE_TABLE)或者为一组语句(例如,DDL_DATABASE

SQL触发器在保持数据库完整性中的实际应用

触发器是SQL Server数据库应用中一个重要工具,是一种特殊类型的存储过程,应用非常广泛.一般存储过程主要通过存储过程名而被直接调用,触发器则是通过事件触发执行.触发器基于一个表来创建并和一个或多个数据修改操作(插入.更新或删除)相关联,可视作表的一部分.触发器与数据库中的表紧密相关,比如当对表执行INSERT.UPDATE或DELETE操作时,触发器就会自动执行. SQL Server 包括两大类触发器:DML 触发器和 DDL 触发器.其中DDL 触发器是 SQL Server 2005

触发器与存储过程互调

触发器|存储过程 :) --触发器如何调用存储过程create trigger test on tablefor insertasexec 存储过程名go   --存储过程如何调用触发器 create proc testasupdate table set ...insert table select ...delete table ...