`
myclover
  • 浏览: 195142 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

谈谈数据库触发器

    博客分类:
  • sql
阅读更多
触发器介绍



触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如UPDATE、 INSERT、 DELETE 这些操作时,SQL Server 就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:
(1) 强化约束(Enforce restriction)
触发器能够实现比CHECK 语句更为复杂的约束。
(2) 跟踪变化Auditing changes
触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。

(3) 级联运行(Cascaded operation)。
触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。
(4) 存储过程的调用(Stored procedure invocation)。
为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS( 数据库管理系统)本身之外进行操作。
由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(INSERT、 UPDATE、 DELETE)的多个触发器能够对同一种数据操作采取多种不同的处理。
总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时间花费在参照其它表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见触发器所参照的其它表的位置决定了操作要花费的时间长短。



SQL Server触发器的种类

SQL Server 2000 支持两种类型的触发器:AFTER 触发器和INSTEAD OF 触发器。其中AFTER 触发器即为SQL Server 2000 版本以前所介绍的触发器。该类型触发器要求只有执行某一操作(INSERT UPDATE DELETE) 之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER 触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder 来完成此任务。

INSTEAD OF 触发器表示并不执行其所定义的操作(INSERT、 UPDATE、 DELETE),而仅是执行触发器本身。既可在表上定义INSTEAD OF 触发器,也可以在视图上定义INSTEAD OF 触发器,但对同一操作只能定义一个INSTEAD OF 触发器。





ORACLE触发器的种类



语句级触发器,以及行级触发器,前者可以在语句执行前或执行后被触发。后者在每个触发语句影响的行触发一次。还有before和after触发的命令。在insert,update,和delete之前或之后执行,引用新旧值进行处理。如果需通过触发器设定插入行中的某列值,则为了访问“新(new)”值,需使用一个触发器before insert,使用after insert则不行。Instead of 触发器命令,使用它告诉oracle应执行什么操作。
分享到:
评论

相关推荐

    sql.rar_sql编程_创建触发器_数据库实现

    在SQL编程中,触发器(Triggers)是数据库管理系统中的一种重要工具,它允许程序员或数据库管理员在特定的数据库操作发生之前或之后自动执行一段代码。这个“sql.rar_sql编程_创建触发器_数据库实现”资源包含了一个...

    谈谈医院数据库日常运行维护.docx

    谈谈医院数据库日常运行维护 hospital information system database maintenance is a crucial aspect of ensuring the smooth operation of hospital information systems. The maintenance of hospital ...

    数据库的存储过程和触发器

    接下来,我们谈谈触发器。触发器是一种特殊类型的存储过程,它不是由用户直接调用,而是由数据库系统在特定事件(如INSERT、UPDATE或DELETE)发生时自动执行。触发器的主要用途包括: 1. **数据完整性**:通过在...

    银行转账,事务处理,触发器

    接下来,我们谈谈触发器。触发器是数据库级别的程序,它在特定的DML(数据修改语言)操作(如INSERT、UPDATE或DELETE)发生时自动执行。在银行系统中,触发器常用于执行一些复杂的业务逻辑,比如转账后的余额检查、...

    oracle存储过程和触发器chm格式

    接下来,我们谈谈触发器。触发器是一种特殊类型的存储过程,它会在数据库中特定的DML(INSERT、UPDATE或DELETE)操作发生时自动执行。触发器主要用于强制实施复杂的业务规则和约束,这些规则和约束无法通过传统的表...

    事务和触发器

    接下来,我们谈谈**触发器**。触发器是数据库管理系统中预定义的存储过程,当特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。它们可以扩展SQL语句的功能,允许执行在数据更改时需要进行的额外逻辑,...

    04735数据库系统原理【真题及答案】

    首先,我们来谈谈数据库的基本概念。数据库是一个有组织的数据集合,它提供了数据的存储、管理、查询和更新功能。常见的数据库管理系统(DBMS)包括MySQL,它是开源且广泛使用的SQL数据库。SQL(Structured Query ...

    MySQL数据库工程师常见面试题

    触发器是在特定事件(如 INSERT、UPDATE 或 DELETE)发生时自动执行的数据库对象。触发器的设计目的是为了响应这些事件并执行相应的逻辑。由于触发器是在事务上下文中执行的,它们不能包含 COMMIT 或 ROLLBACK 语句...

    ORACLE数据库安装配置说明

    3. **对象管理**:可以查看和管理数据库中的表、视图、存储过程、函数、触发器等各种对象,方便进行创建、修改和删除操作。 4. **数据浏览和编辑**:直接查看和编辑表中的数据,支持导出和导入数据。 5. **版本...

    SQL Server数据库的创建

    在实际开发中,你可能还需要了解T-SQL(Transact-SQL),它是SQL Server的扩展语法,支持复杂的数据库操作,如存储过程、触发器和视图的创建。此外,索引的建立和优化也是数据库设计中的重要环节,可以显著提升查询...

    微型教务系统数据库大作业.zip

    综上所述,这个微型教务系统数据库大作业涵盖了数据库编程的关键要素,包括Java与数据库的交互、事务管理、触发器的应用、存储过程的使用,以及视图的创建和查询。这样的项目对于学习数据库设计和管理,以及理解...

    c#中怎样连接数据库

    接下来,我们谈谈“触发器”。在SQL Server中,触发器是一种特殊的存储过程,它会在特定的DML(数据操纵语言)操作(如INSERT、UPDATE或DELETE)发生时自动执行。触发器可以用来强制业务规则、保持数据一致性或记录...

    SQL 学习笔记 课堂讲义 , 游标,触发器,存储过程

    在SQL的学习过程中,游标、触发器和存储过程是三个非常重要的概念,它们极大地扩展了SQL的功能,使得数据库管理更加灵活高效。以下是对这些概念的详细解析: 首先,我们来看"SQL学习笔记"中的"课堂讲义"部分。这...

    数据库 基础知识与时间操作应用

    首先,让我们来谈谈数据库的基本概念。数据库是一个组织化的数据集合,它可以是结构化的,如关系型数据库(RDBMS),例如MySQL,也可以是非结构化的,如NoSQL数据库。在关系型数据库中,数据以表格的形式存储,表格...

    数据库本科期末复习资料

    此外,还会深入理解MySQL的事务处理、存储引擎(如InnoDB和MyISAM)、索引优化、视图、触发器等高级特性。 其次,实验代码这部分可能包含了实际操作数据库的示例,这有助于学生将理论知识转化为实践经验。通过编写...

    sql高级查询之BBS数据库上机

    最后,我们不能忽视的是,SQL的存储过程和触发器可以提高代码复用性和数据库的自动化程度。例如,创建一个存储过程用于批量删除用户及其相关的所有帖子和回复: ```sql CREATE PROCEDURE delete_user(IN user_id ...

    深入学习SQLServer,毕业设计论文答辩;ER模型,视图,表,存储过程,触发器,事务等的详细介绍

    触发器是数据库级别的事件驱动程序,当满足特定条件(如INSERT、UPDATE或DELETE操作)时自动执行。触发器常用于强制实施业务规则,进行审计跟踪,或者同步相关表的数据。然而,过度使用触发器可能会导致性能问题,...

    数据库脚本和三方jar.zip

    这些脚本可能包括创建表、视图、索引、存储过程、触发器等数据库对象,以及填充初始数据。在paascloud项目中,这些脚本是至关重要的,因为它们确保了数据库环境与应用程序的正确配置和同步。使用数据库脚本,开发者...

    数据库工程师常见面试题.pdf

    Drop 命令从数据库中删除表,所有的数据行,索引和权限也会被删除,所有的 DML 触发器也不会被触发,这个命令也不能回滚。 问题 4:插入记录时可以不指定字段名称吗? 答案:不管使用哪种 INSERT 语法,都必须给出...

Global site tag (gtag.js) - Google Analytics