精华内容
下载资源
问答
  • 数据库触发器

    2012-12-01 19:09:53
    详细的数据库触发器知识,非常适合入门和学习
  • SQL 数据库 触发器 SQL 数据库 触发器
  • mysql数据库触发器

    2019-06-02 11:36:53
    数据库触发器: 1.什么是数据库触发器

    数据库触发器:
    1.什么是数据库触发器?
    触发器:当对表进行insert、update、delete操作的时候,触发某个条件,执行一段程序,触发器是一个特殊的存储过程。

    2.如何创建触发器?
    语法:
    create trigger
    trigger_name trigger_time trigger_event
    on 表名
    for each row trigger_stmt

    备注:
    .trigger_name:标识触发器的名称,用户自定义;
    .trigger_time:触发时机,取值为—>before、after;
    .trigger_event:触发事件,取值为—>insert、update、delete;
    .trigger_stmt:触发程序体;

    *触发器语法规定:同一张表上不能建立2个相同的触发器,因此在一张表上最多建立:2x3=6个触发器,
    即----> before insert、before update、before delete
    after insert、 after update 、after delete

    3.触发器的查看、删除命令:
    ①.查看命令:show triggers;
    ②.删除命令: drop trigger trigger_name;

    展开全文
  • oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例
  • 摘要:C#源码,数据库应用,嵌套,触发器 C#数据库触发器的嵌套使用实例,一个C#数据库触发器的使用实例源代码。
  • SQL数据库触发器练习题附加数据库
  • 数据库触发器ppt

    2011-10-25 11:51:45
    详细介绍了数据库触发器的原理 与开发 使读者能够快速的掌握数据库触发器的开发技术
  • SQL数据库触发器

    2019-11-15 19:57:34
    SQL数据库触发器 基础知识 DML触发器分为两种 after触发器 instead of触发器 after触发器是在执行之后触发; instead of触发器是在执行之前触发 在after之后可以跟三个关键词 insert update delete 接下来第二...

    SQL数据库触发器

    基础知识

    DML触发器分为两种
    • after触发器
    • instead of触发器

    after触发器是在执行之后触发; instead of触发器是在执行之前触发

    在after之后可以跟三个关键词
    1. insert
    2. update
    3. delete
      接下来第二部分我会具体分析
    instead of直接执行触发器本身

    after insert

    注释

    在这里插入图片描述

    运用

    原样:

    在这里插入图片描述
    代码:
    定义

    create trigger jr on person
    after insert
    as
    INSERT INTO Person (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')
    

    触发

    INSERT INTO person
    VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
    

    结果
    在这里插入图片描述

    想说一下

    after update

    注释

    在这里插入图片描述

    运用

    原样:
    原样
    代码:
    定义

    create trigger dizhi on person
    after update 
    as
    update person set address = 'zhongshan 23' ,city='nanjing'
    where lastname ='wilson'
    

    触发

    update person set firstname='fred' where lastname = 'wilson'
    

    结果
    在这里插入图片描述
    在这里插入图片描述

    想说一下

    在这里插入图片描述
    注意一下定义触发器是不可以定义成具体的东西的,我最开始就是错了,下面吧错误的代码给大家警戒一下

    create trigger dizhi on person
    after update person set firstname='fred' where lastname = 'wilson'
    as
    update person set address = 'zhongshan 23' ,city='nanjing'
    where lastname ='wilson'
    

    在这里插入图片描述

    after delete

    注释

    在这里插入图片描述

    运用

    原样:
    在这里插入图片描述

    代码:
    定义

    create trigger shanchu
    on person
    after delete
    as
    delete from person where lastname = 'wilson'
    

    触发

    delete from person where firstname='bill'
    

    结果
    在这里插入图片描述

    想说一下

    哎,数据库要多刷新啊,尤其是这个触发器。

    instead of

    注释
    运用

    原样:
    在这里插入图片描述
    代码:
    定义

    create trigger tidai on person
    instead of delete
    as
    delete from person where lastname='aaa'
    

    触发

    delete from person where lastname='bbb'
    

    结果
    在这里插入图片描述

    想说一下
    展开全文
  • 什么是数据库触发器

    千次阅读 2019-09-12 10:13:20
    什么是数据库触发器? 事件 AFTER触发器 INSTEAD OF触发器 特殊数据库对象 定义 用于触发器 复杂的审计 执行业务规则 派生列值 触发器很棘手! 什么是数据库触发器数据库触发器是在数据库中发生特定...

    目录

    什么是数据库触发器?

    事件

    AFTER触发器

    INSTEAD OF触发器

    特殊数据库对象

    定义

    用于触发器

    复杂的审计

    执行业务规则

    派生列值

    触发器很棘手!


    什么是数据库触发器?

    数据库触发器是在数据库中发生特定操作时运行的特殊存储过程。大多数触发器定义为在对表的数据进行更改时运行。触发器可以定义为替代或在DML(数据操纵语言)-INSERT, UPDATE, and DELETE-之后来运行。

    触发器可帮助数据库设计人员确保完成某些操作(如维护审计文件),而不管哪个程序或用户对数据进行了更改。

    程序被称为触发器,因为事件(例如向表中添加记录)会触发它们的执行。

    触发器及其实现特定于数据库供应商。在本文中,我们将重点介绍Microsoft SQL服务器;但是,OracleMySQL中的概念相同或相似。

    注意:本课程的所有示例均基于Microsoft SQL Server Management StudioAdventureWorks2012数据库。

    事件

    触发器可以在DML操作之后发生,也可以不发生。触发器与数据库DML操作INSERTUPDATEDELETE相关联。触发器定义为在特定表上执行这些操作时运行。

    AFTER触发器

    一旦DML操作(例如INSERT)完成,就会执行AFTER触发器。以下是AFTER触发器的一些关键特性:

    • DML操作之后运行触发器之后,例如INSERT语句和任何随后的参考级联操作和约束检查已运行。
    • 您无法使用AFTER触发器取消数据库操作。这是因为该行动已经完成。
    • 可以在表上定义每个动作一个或多个AFTER触发器,但为了简单起见,我建议仅定义一个。
    • 您无法在视图上定义AFTER触发器。

    INSTEAD OF触发器

    顾名思义,INSTEAD OF触发器代替导致它们触发的DML动作。使用INSTEAD OF触发器时要考虑的事项包括:

    • INSTEAD OF触发器会覆盖触发操作。如果定义一个INSTEAD OF触发器在INSERT语句上执行,那么一旦INSERT语句尝试运行,控制就会立即传递给INSTEAD OF触发器。
    • 最多可以为表的每个操作定义一个INSTEAD OF触发器。这是有道理的,就好像你必须为插入一个“INSTEAD OF”触发器一样,哪一个应该运行?

    特殊数据库对象

    触发器使用两个特殊的数据库对象INSERTEDDELETED来访问受数据库操作影响的行。在触发器的范围内,INSERTEDDELETE对象具有与触发器表相同的列。

    INSERTED表包含所有新值;DELETED表包含旧值。以下是表格的使用方法:

    • INSERT——使用INSERTED表确定将哪些行添加到表中。
    • DELETE——使用DELETED表查看从表中删除的行。
    • UPDATE——使用INSERTED表检查新值或更新值,使用DELETED表查看更新前的值。

    定义

    为特定表和一个或多个事件定义触发器。在大多数数据库管理系统中,每个表只能定义一个触发器。

    以下是AdventureWorks2012数据库的示例触发器。

    您会注意到触发器的语法与存储过程的语法非常相似。事实上,触发器使用相同的语言来实现其逻辑,就像存储过程一样。在MS SQL中,这是T-SQL;而在Oracle中则是PL/SQL

    以下是触发器的一些重要部分:

    1. CREATE语句——它定义哪个表与触发器相关联。此外,此语句用于指定触发器何时执行(例如插入后)。
    2. 实际的程序。在该示例中,只要将一行或多行插入WorkOrder表,该程序就会运行。
    3. 特殊数据库对象——触发器使用特殊定义的数据库对象(如INSERTEDDELETED)来访问受数据库操作影响的记录。
    4. 在此示例中,触发器使用INSERTED对象来访问新创建的行。INSERT语句用于表示这些行并将它们添加到历史表中。

    用于触发器

    以下是触发器的一些常见用法:

    复杂的审计

    您可以使用触发器来跟踪对表所做的更改。在上面的示例中,对WorkOrder表所做的更改将记录在TransactionHistory表中。

    通常在创建审计跟踪时,您将使用AFTER触发器。

    您可能认为这是多余的,因为数据库日志中记录了许多更改,但日志用于数据库恢复,用户程序无法轻松访问。TransactionHistory表易于引用,可以合并到最终用户报告中。

    执行业务规则

    触发器可用于在执行DML操作之前检查所有数据。您可以使用INSTEAD OF触发器拦截挂起的DML操作,应用任何业务规则,并最终完成事务。

    示例业务规则可以是客户状态定义为:

    • 黄金——过去12个月的购买量超过1,000,000美元。
    • 白银——在过去12个月内购买500,000美元至1,000,000美元。
    • 青铜——所有其他购买水平。

    可以定义INSTEAD OF触发器,以便在每次添加或修改客户记录时检查客户状态。状态检查将涉及创建所有客户购买的总和,并确保新状态与过去12个月的购买总和相对应。

    派生列值

    触发器可用于计算列值。例如,对于每个客户,您可能希望在客户记录上维护TotalSales列。当然,为了保持准确,每次销售时都必须更新。

    这可以使用Sales表的INSERTUPDATEDELETE语句上的AFTER触发器来完成。

    触发器很棘手!

    一般来说,我的建议是避免使用触发器,除非绝对必要。

    您应该避免使用触发器代替内置功能。例如,不是依靠触发器来强制执行引用完整性,而是最好使用关系

    以下是我回避他们的一些原因:

    1. 他们可能很难排除故障。
    2. 触发器可以触发其他触发器。两个表AB都有一个AFTER UPDATE触发器。如果表A上的AFTER UPDATE触发器更新表B,则更新表A会导致触发,然后B触发。
    3. 你必须确保不会造成触发风暴!你能想象表B由于某种原因更新了表A吗?现在你有一个循环参考......轰!
    4. 我尝试将尽可能多的逻辑移动到存储过程中,并让应用程序通过它们而不是直接的SQL语句来更改数据库。
    展开全文
  • Oracle数据库触发器

    2019-09-11 15:36:27
    Oracle数据库触发器 数据库触发器:是一个与表相关联(定义在表上),存储的PLSQL程序 作用:每当一个特定的数据操作语句(insert,update,delete)在特定的表上触发时,Oracle自动的执行触发器中定义的语句序列;...

    Oracle数据库触发器

    数据库触发器:是一个与表相关联(定义在表上),存储的PLSQL程序
    作用:每当一个特定的数据操作语句(insert,update,delete)在特定的表上触发时,Oracle自动的执行触发器中定义的语句序列;(注:select语句没有触发器)

    下面我们先来写第一个触发器程序:每当成功插入新员工后,打印“插入成功”;触发器单词(trigger)

    create trigger saynewemp
    after insert
    on emp
    declare
    begin
      dbms_output.put_line('-----c');
    end;
    /
    

    注:上边这行代码的意思是:在表emp上创建一个叫saynewemp的触发器,它在insert语句之后(after)触发,打印出想打印的话;
    下面进行测试:运行如下代码

    insert into emp(EMPNO,SAL,ENAME,DEPTNO) VALUES (1677,5000,'shii',20);
    

    结果如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    触发器的类型

    • 语句级触发器:在指定的操作之前或之后执行一次,不管这条语句影响了多少行(语法上没有for each row)针对的是表;
    • 行级触发器:触发语句作用的每一条记录都被触发,在行级触发器中使用:old和:new伪记录变量,识别值的状态,针对的是行。
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 148,310
精华内容 59,324
关键字:

数据库触发器