当前位置: 首页 > 图灵资讯 > 技术篇> SQL触发器的作用及其分类

SQL触发器的作用及其分类

来源:图灵教育
时间:2023-04-16 09:22:05

触发器(trigger)这是一个特殊的存储过程。它的执行不是由程序调用或手动启动的,而是由一个事件触发的,例如在操作表时( insert,delete, update)时,SQL Server 触发器定义将自动执行SQL这些SQL必须符合语句,以确保数据的处理 定义语句的规则。掌握SQL触发器的功能及其分类是熟练使用SQL触发器的必要前提。

触发器可以查询其他表格,并且可以包含复杂性 SQL 陈述。它们主要用于强制服从复杂的业务规则或要求。例如,您可以控制是否允许根据客户当前的账户状态插入新订单。

触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时保持这些表之间定义的关系。然而,强制引用完整性的最佳方法是在相关表中定义关键和外部关键约束。如果使用数据库关系图,可以在表之间创建关系,自动创建外部关键约束。

触发器的主要功能是实现主键和外键无法保证的复杂参考完整性和数据一致性。此外,触发器还有许多其他不同的功能:

1.强化约束(Enforce restriction)

触发器可以实现比例CHECK 句子的约束比较复杂。

2.跟踪变化Auditing changes

触发器可以检测数据库中的操作,不允许数据库中未经许可的指定更新和更改。

3.级联运行(Cascaded operation)。

触发器可以检测数据库中的操作,并自动地级联影响整个数据库的内容。例如,表上的触发器包含对另一个表的数据操作(如删除、更新和插入),导致表上的触发器触发。

4.调用存储过程(Stored procedure invocation)。

为了响应数据库更新触摸,发器可以调用一个或多个存储过程,甚至可以调用外部过程DBMS( 操作本身以外的数据库管理系统。

可以看出,触发器可以解决一些问题,如高级形式的业务规则或复杂的行为限制,以及实现定制记录。例如,触发器可以找出数据修改前后某个表的状态差异,并根据该差异进行一定的处理。此外,同一类型的表(INSERT、 UPDATE、 DELETE)多个触发器可以对同一数据操作进行多种不同的处理。

一般来说,触发器的性能通常相对较低。当触发器运行时,系统处理的大部分时间都花在参考其他表的处理上,因为它们既不在内存中,也不在数据库设备上,而删除表和插入表总是位于内存中。触发器参考的其他表位置决定了操作的时间长短。

SQL Server 包括三种常规触发器:DML 触发器、DDL 触发器和登录触发器。(RS触发器、D触发器、同步触发器等。可分为逻辑电路中的不同逻辑功能。)

DML触发器

当数据库中表中的数据发生变化时,包括insert,update,delete任意操作。如果我们在表中写下相应的DML触发器,触发器将自动执行。DML触发器的主要功能是强制执行 扩展Sql规则,扩展Sql Server约束、默认值等。因为我们知道约束只能约束同一表中的数据,而任何Sql命令都可以在触发器中执行。

DDL触发器

它是Sql Server2005新触发器主要用于审查和规范数据库中表、触发器、视图等结构的操作。例如,在修改表、修改列、新表、新列等方面。它是在数据库结构发生变化时执行的。我们主要使用它来记录数据库的修改过程,并限制程序员修改数据库,如不允许删除某些指定表。

登录触发器

登录触发器将是响应 LOGIN 激发存储过程的事件。与 SQL Server 在建立用户会话时,实例会导致此事件。登录触发器将在登录身份验证阶段完成并在用户会话实际建立之前激发。因此,所有来自触发器并通常到达用户的信息(如错误信息和来自用户的信息) PRINT 语句的消息)会传递到 SQL Server 错误日志。如果身份验证失败,登录触发器将不会受到刺激。

虽然触发器功能强大,易于可靠地实现许多复杂的功能,但同时也要慎用触发器。触发器本身没有错,但我们的滥用会使数据库和应用程序难以维护。在数据库操作中,我们可以通过关系、触发器、存储过程、应用程序等实现数据操作…… 同时,规则、约束和缺乏值也是保证数据完整性的重要保证。如果我们过度依赖触发器,必然会影响数据库的结构,增加维护的复杂性。