广告
返回顶部
首页 > 资讯 > 数据库 >数据库:触发器
  • 262
分享到

数据库:触发器

2024-04-02 19:04:59 262人浏览 泡泡鱼
摘要

触发器的概念:    是用户定义在关系表上的一类有事件驱动的特殊过程。一旦定义,任何对表的增删改操作均有服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控

触发器的概念:

    是用户定义在关系表上的一类有事件驱动的特殊过程。一旦定义,任何对表的增删改操作均有服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制。类似于约束,但比约束更灵活。


触发器的分类:

DML触发器:DML(Data Manipulation Language)触发器是当数据库服务器中发生数据操作语言事件时执行的存储过程。DML触发器又分为两类:After触发器和Instead Of触发器

DDL触发器:DDL触发器是在响应数据定义语言(Data Definition Language)事件时执行的存储过程。DDL触发器一般用于执行数据库中管理任务。如审核和规范数据库操作、防止数据库表结构被修改等。

After触发器:这类触发器是在记录已经改变完之后(after),才会被激活执行,它主要是用于记录变更后的处理或检查,一旦发现错误,也可以用Rollback Transaction语句来回滚本次的操作。

Instead Of触发器:这类触发器一般是用来取代原本的操作,在记录变更之前发生的,它并不去执行原来sql语句里的操作(Insert、Update、Delete),而去执行触发器本身所定义的操作。

SQL Server里,每个DML触发器都分配有两个特殊的表,一个是Inserted表,一个是Deleted表。它们两个存在于数据库服务器的内存中,是由系统管理的逻辑表,是两个临时表,而不是真正存储在数据库中的物理表。用户对这两个表只有读取的权限,没有修改的权限。

这两个表的结构(主外键、字段、数据类型等)与触发器所在数据表的结构是完全一致的,当触发器的工作完成之后,这两个表也将会从内存中删除。

定义触发器:

 使用CREATE TRIGGER命令建立触发器,其一般格式为:

CREATE TRIGCER <触发器名>
| BEFORE| AFTER| <触发事件>ON<表名>
FOR EACH | ROW| STATEMENT|
{ WHEN <触发条件>}
<触发动作体>

1.触发器名:可包含模式名,也可不包含,同一模式下,触发器名必须是唯一的;并且触发器名和<表名>

必须在同一模式下。


2.表名:表数据发生变化是,激活定义在该表上相应<触发事件>的触发器,也称触发器的目标表。


3。触发事件:可以是INSERT ,DELETE .UPDATE,也可以是这几个事件的组合。指明修改哪些列时触发器

组合,可以是几个事件的组合并且可以附加OF <触发列>。


4.触发器类型:行级触发器(FOR EACH ROW),语句级触发器(FOR EACH STATEMENT).


5.触发条件:被激活时,只有当触发条件为真时触发动作提才执行,如果省略WHEN,则触发动作体在触

发器激活后立即执行


6.触发动作体:是一个匿名PL/SQL过程块,也可以是对已创建存储过程的调用。

 如果是行级触发器,2中情况下都可以使用NEW/OLD引用,UPDATE/INSER事件之后的新值和UPDATE/DELETE事件之前的旧值。如果是语句级触发器,则不能在触发动作体中使用NEW/OLD引用。


下面看一下例子:

定义一个BEFORE行级触发器,为教师表Teacher定义完整性规则“教授的工资不得低于4000元,如果低于,就自动改为4000”

CREATE TRLGGER Insert_Or_Updata_Sal   
    BEFORE INSERT OR UPDATE ON Teacher 
    FOR EACH ROW
    AS BEGIN
        IF(new.Job = '教授') AND (new.Sal < 4000) THEN
            new.Sal : = 4000;
        END IF
    END;


定义AFTER 行级触发器,当教师表Teacher的工资发生变化后自动在工资变化表Sal_log中增加一条相应记录

CREATE TRLGGER Insert_Sal   
    AFTER INSERT ON Teacher 
    FOR EACH ROW
    AS BEGIN
        INSERT INTO Sal_log VALUES(
            new.Eno,new.Sal,CURRENT_USER,CURRENT_TIMESTAMP);
        END;
        
CREATE TRLGGER Update_Sal   
    AFTER UPDATE ON Teacher 
    FOR EACH ROW
    AS BEGIN
        IF(new.Sal <> old.Sal) THEN INSERT INTO Sal_log VALUES(
            new.Eno,new.Sal,CURRENT_USER,CURRENT_TIMESTAMP);
        END IF;
    END;

激活触发器:

    执行表上的BEFORE触发器;

    激活触发器的SQL语句;

    执行该表上的AFTER触发器。

删除触发器:

    DROP TRIGGER<触发器名> ON <表名>;

您可能感兴趣的文档:

--结束END--

本文标题: 数据库:触发器

本文链接: https://www.lsjlt.com/news/41426.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库-触发器
    目录 1. 触发器概述 2. 触发器的创建 2.1 创建触发器语法 3. 查看、删除触发器  3.2 删除触发器 4. 触发器的优缺点 4.2 缺点 4.3 注意点 在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关联的表...
    99+
    2023-09-22
    数据库 mysql
  • 数据库:触发器
    触发器的概念:    是用户定义在关系表上的一类有事件驱动的特殊过程。一旦定义,任何对表的增删改操作均有服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控...
    99+
    2022-10-18
  • MySQL数据库 触发器 trigger
    目录一、基本概念1、作用2、触发器的优缺点2.1、优点2.2、缺点二、创建触发器1、基本语法2、触发对象3、触发时机4、触发事件5、注意事项三、查看触发器四、触发触发器五、删除触发器六、触发器的应用1、完善2、优化一、基...
    99+
    2022-06-16
    MySQL trigger 触发器trigger
  • 数据库触发器的作用
    这篇文章主要介绍数据库触发器的作用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!数据库中的触发器的作用:触发器主要用于强制复杂的业务规则和要求,还有助于强制引用的完整性,便于在添加,...
    99+
    2022-10-18
  • sql数据库触发器如何写
    编写SQL数据库触发器可以使用以下语法: CREATE TRIGGER trigger_name {BEFORE | AFTER} ...
    99+
    2023-10-24
    sql数据库
  • 详解MySQL数据库之触发器
    1 引言 本文是对MySQL中触发器的总结,从触发器概念出发,结合实例对创建触发器、使用触发器、删除触发器进行介绍。 2 触发器简介 MySQL触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器是由事件...
    99+
    2022-05-20
    MySQL 触发器
  • MySQL数据库提升篇-----触发器
    day06 MySQL数据库提升篇-----触发器一、触发器概述:    触发器是什么?能有什么作用?能给我们带来什么样的操作数据库的方法这都在这里学一一的告诉大家。...
    99+
    2022-10-18
  • MySQL数据库高级(五)——触发器
    MySQL数据库高级(五)——触发器 一、触发器简介 1、触发器简介 触发器是和表关联的特殊的存储过程,可以在插入,删除或修改表中的数据时触发执行,比数据库本身标准的功能有更精细和更复杂的数据控制能力。 2...
    99+
    2022-10-18
  • 如何使用数据库触发器
    这篇文章主要介绍“如何使用数据库触发器”,在日常操作中,相信很多人在如何使用数据库触发器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用数据库触发器”的疑惑有所帮助!接...
    99+
    2022-10-18
  • 数据库触发器举例分析
    这篇文章主要讲解了“数据库触发器举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库触发器举例分析”吧!我们维护一张客户表,这张表的内容在周六和周日...
    99+
    2022-10-18
  • MYSQL数据库触发器怎么用
    今天小编给大家分享一下MYSQL数据库触发器怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2022-10-19
  • java怎么实现数据库触发器
    在Java中,可以通过使用JDBC或Hibernate等框架来实现数据库触发器。1. 使用JDBC实现数据库触发器:a. 首先,需要...
    99+
    2023-10-12
    java 数据库
  • MySQL数据库触发器怎么创建
    创建MySQL数据库触发器的语法如下: CREATE TRIGGER trigger_name {BEFORE | AFTER} {...
    99+
    2023-10-26
    MySQL数据库
  • 数据库索引、 触 发器及 事务
    索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。数据库索引好比是一本书前面的目录,能加快数据库的检索速度。索引的实现通常是B树及其变种B+树。建立索引...
    99+
    2022-10-18
  • MySQL数据库的触发器的使用
    目录使用触发器触发器创建触发器删除触发器使用触发器INSERT触发器DELETE触发器UPDATE触发器触发器的进一步介绍使用触发器 触发器 发生什么事情之后或之前,会自动执行某条语句,这就是触发器 创建触发器 创建触发...
    99+
    2022-09-29
  • 数据库中触发器有什么用
    这篇文章主要介绍了数据库中触发器有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。触发器有两个稳态,可分别表示二进制数码0和1,无外触发...
    99+
    2022-10-18
  • 怎么创建sql数据库触发器
    本篇文章给大家分享的是有关怎么创建sql数据库触发器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。创建sql数据库触发器的方法是:【creat...
    99+
    2022-10-18
  • 数据库中触发器trigger怎么用
    这篇文章主要介绍了数据库中触发器trigger怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 实验如下:-...
    99+
    2022-10-19
  • MySQL数据库的触发器和事务
    目录一、触发器概念二、 触发器的操作触发器的增删改操作触发器的查看删除操作三、事务概念四、事务的操作基本流程基础操作事务的提交方式事务的隔离级别隔离操作一、触发器 概念 触发器是SQ...
    99+
    2022-11-13
    MySQL数据库触发器 MySQL数据库事务
  • MySql数据库触发器使用教程
    目录一、介绍二、操作1、表数据准备2、触发器格式3、操作三、触发器NEW和OLD的使用1、案例四、其他操作五、注意事项补充:验证触发器总结一、介绍 1、触发器是一种特殊的存储过程。触...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作