触发器具有强大的功能,每个触发器有插入和删除两个特殊的表,它有以下几个特点:((1)这两个表是逻辑表,并且是由系统管理的,存储在内存中,不是存储在数据库中,因此不允许用户直接对其修改。
(2)这两个表的结构总是与被该触发器作用的表有相同的表结构。
(3)这两个表动态驻留在内存中,当触发器工作完成时,这两个表也被删除。这两个表主要保存因用户 *** 作而被影响到的原数据值或新数据值。
(4)这两个表是只读的,且只在触发器内部可读,即用户不能向这两个表写入内容,但可以在触发器中引用表中的数据。
对一个定义了插入类型触发器的表来讲,一旦对该表执行了插入 *** 作,那么对该表插入的所有行来说,都有一个相应的副本级存放到插入表中,即插入表就是用来存储原表插入的新数据行。
对一个定义了删除类型触发器的表来讲,一旦对该表执行了删除 *** 作,则将所有的被删除的行存放至删除表中。这样做的目的是,一旦触发器遇到了强迫它中止的语句被执行时,删除的那些行可以从删除表中得以还原。需要特别注意的是,更新 *** 作包括两个部分动作:先将旧的内容删除,然后将新值插入。
因此,对一个定义了更新类型触发器的表来讲,当执行更新 *** 作时,在删除表中存放修改之前的旧值,然后在插入表中存放修改之后的新值。
触发器对数据约束的原理是逐行检查。当在数据表上执行插入、删除和更新 *** 作,触发器将会被触发执行时,每条SQL语句的 *** 作哪怕只影响数据库中的一条记录,其也会检查此次 *** 作对其他记录的影响,会对表中的所有记录按触发器上所定义的约束进行全方位的检查。
如果表中数据比较大,达到百万级的情况,触发器这个逐行检查原理会严重影响系统的性能,因此在使用触发器时需慎重评估其性能风险。
触发器是数据库提供给程序员和数据分析员来保证数据完整性的一种机制,它是一种与数据表事件相关的特殊的存储过程。触发器的执行不是由程序调用,也不需要手工开启,而是由数据表上的事件来触发,当用户对一个数据表进行增、删、改 *** 作时就会激活它执行。
触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。
触发器功能强大,可以轻松可靠地实现许多复杂的功能,但也不能过于依赖触发器,滥用触发器会造成关系数据库及应用程序维护困难,性能、效率低下等问题的产生,在实际问题中,要根据实际需要选择合适的解决方案。触发器是一种特殊的存储过程,在插入、删除、修改特定表中的数据时触发执行,拥有比数据库本身更强大的数据控制能力,其作用有以下四大方面。
1.数据安全数据安全主要是指对信息系统中的业务数据提供一种数据变更的审核机制,当其通过安全策略的审核后,允许用户变更相关数据,否则直接拒绝数据变更的请求。
安全原理:基于数据库的值使用户具有 *** 作数据库的某种权利。
((1)可以基于时间限制用户的 *** 作。例如,不允许下班后和节假日修改数据库数据。
(2)可以基于数据库中的数据限制用户的 *** 作。例如,不允许股票价格的升幅一次超过10%。
2.数据审计数据审计主要是指对数据服务器上的记录进行变更时的一种用户权限的即时审查与用户行为的全方位记录,以便事后对数据变更过程的追溯,保证数据变更的合法性。
审计原理:跟踪用户对数据库的 *** 作。
((1)审计用户 *** 作数据库的语句。
(2)把用户对数据库的更新写入审计表。
3.数据约束数据约束是指对用户的 *** 作行为将导致业务数据与实际情况相悖的行为进行检查约束,而不让其发生,从而保证数据的完整性与一致性。
约束原理:对用户 *** 作与实际逻辑的约束检查。
((1)实现数据完整性检查和约束。例如,回退任何企图买进超过自己资金的货物。
(2)提供可变的缺省值。
4.数据连环更新数据连环更新是指当对数据进行更新 *** 作时,将所有与此数据相关联的数据作联合的更新 *** 作,以保证数据的完整性与一致性。
连环更新原理:对关联数据作联合更新 *** 作。
((1)修改或删除时级联修改或删除其他表中与之匹配的行。
(2)修改或删除时把其他表中与之匹配的行设成NULL值。
(3)修改或删除时把其他表中与之匹配的行级联设成缺省值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)