怎么利用数据库触发器实现数据的同步

技术怎么利用数据库触发器实现数据的同步本篇内容主要讲解“怎么利用数据库触发器实现数据的同步”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用数据库触发器实现数据的同步”吧

本文主要讲解“如何使用数据库触发器实现数据同步”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习如何使用数据库触发器来实现数据同步。

00-1010数据库触发器是与表相关联的存储的PL/SQL语句。每当对指定的表发出特定的数据操作语句(插入更新删除)时,Oracle会自动执行触发器中定义的语句序列。

触发器的应用场景如下:

复杂的安全检查。

数据确认。

数据库审计

数据的备份和审计。

一、什么是触发器

123456789创建[或替换]触发器触发器_名称

{前|后}

{插入|删除|更新[列[,列…]]

[或{插入|删除|更新[列[,列…]].]

class=”sql keyword”>ON [schema.]table_name | [schema.]view_name
                                   [REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
                                   [FOR EACH ROW ]
                                   [WHEN condition]
                                   PL/SQL_BLOCK | CALL procedure_name;
                                   

其中:

  • BEFORE 和AFTER指出触发器的触发时序分别为前触发和后触发方式,前触发是在执行触发事件之前触发当前所创建的触发器,后触发是在执行触发事件之后触发当前所创建的触发器。

  • FOR EACH ROW选项说明触发器为行触发器。

  • 行触发器和语句触发器的区别表现在:行触发器要求当一个DML语句操走影响数据库中的多行数据时,对于其中的每个数据行,只要它们符合触发约束条件,均激活一次触发器;而语句触发器将整个语句操作作为触发事件,当它符合约束条件时,激活一次触发器。

  • 当省略FOR EACH ROW 选项时,BEFORE 和AFTER 触发器为语句触发器,而INSTEAD OF 触发器则只能为行触发器

  • REFERENCING 子句说明相关名称,在行触发器的PL/SQL块和WHEN
    子句中可以使用相关名称参照当前的新、旧列值,默认的相关名称分别为OLD和NEW。触发器的PL/SQL块中应用相关名称时,必须在它们之前加冒号(:),但在WHEN子句中则不能加冒号。

  • WHEN 子句说明触发约束条件。Condition 为一个逻辑表达时,其中必须包含相关名称,而不能包含查询语句,也不能调用PL/SQL
    函数。WHEN 子句指定的触发约束条件只能用在BEFORE 和AFTER 行触发器中,不能用在INSTEAD OF
    行触发器和其它类型的触发器中。

  • 当一个基表被修改( INSERT, UPDATE, DELETE)时要执行的存储过程,执行时根据其所依附的基表改动而自动触发,因此与应用程序无关,用数据库触发器可以保证数据的一致性和完整性。

三、Oracle触发器的类型

  • 行级触发器:对DML语句影响的每个行执行一次,例如,一条update语句更新了100条数据,如果我们针对update定义了行级触发器,那么行级触发器将会被触发100次 。

  • 语句级触发器:对每个DML语句执行一次,例如,一条update语句更新了200条数据,如果我们针对update定义了语句级触发器,那么语句级触发器将会被触发1次 。

四、利用数据库触发器实现数据的同步

123456789 create or replace trigger sync_salary
                                   after update
                                   on emp
                                   for each row
                                   begin
                                     --当主表更新后,自动更新备份表。
                                     update emp_back set sal=:new.sal where empno=:new.empno;
                                   end;
                                   /
                                   
  • 在上面的例子中,当我们更新了主表emp的薪水后,这个行级触发器将会被自动执行更新备份表中的员工的薪水。

到此,相信大家对“怎么利用数据库触发器实现数据的同步”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/67439.html

(0)

相关推荐

  • 集合框架-工具类-Collections-排序

    技术集合框架-工具类-Collections-排序 集合框架-工具类-Collections-排序1 package cn.itcast.p2.toolclass.collections.demo;2

    礼包 2021年10月26日
  • 束发之年,古代女子及笄的年龄是多少

    技术束发之年,古代女子及笄的年龄是多少及笄的年龄是15周岁束发之年。 及笄[jī]:笄,本来是指古代束发用的簪子。古代女子一般到15岁以后,就把头发盘起来,并用簪子绾住,表示已经成年。“及笄”即年满15岁的女子。 男子十

    生活 2021年10月25日
  • 牡丹鹦鹉怎么养,牡丹鹦鹉是怎么繁殖与喂养的

    技术牡丹鹦鹉怎么养,牡丹鹦鹉是怎么繁殖与喂养的首先先忙明确一下:牡丹鹦鹉面类是可以养殖牡丹鹦鹉怎么养,如果是头类牡丹鹦鹉就要办理饲养证。
    正文开始了:
    如果你打算自己繁殖你的鹦鹉,首先必须为小鸟准备一个爱巢,尺寸不能小于

    生活 2021年10月21日
  • java怎么设置每天定时任务的框架(java定时任务存在什么问题)

    技术java中常用的定时任务框架单体是怎样的本篇文章为大家展示了java中常用的定时任务框架单体是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、Timer+TimerT

    攻略 2021年12月21日
  • Linux中系统命令有哪些

    技术Linux中系统命令有哪些小编给大家分享一下Linux中系统命令有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ps查看系统中进程状态

    攻略 2021年11月20日
  • oraclehashjoin怎么使用(oracle创建hash索引语句)

    技术Oracle数据库中hash join和nested loop怎么用这篇文章主要为大家展示了“Oracle数据库中hash join和nested loop怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,

    攻略 2021年12月13日