文档章节

oracle跨库数据库link及触发器

hello骡子
 hello骡子
发布于 2015/11/02 13:45
字数 438
阅读 37
收藏 0

1、创建oracle跨库LINK
CREATE  PUBLIC DATABASE LINK BEYOND_DATABASE CONNECT TO tms IDENTIFIED BY tmsneu USING '(DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
     )
     (CONNECT_DATA =
(SERVICE_NAME = tms)
     )
)';
commit;
2、创建触发器
create or replace TRIGGER TRIGGER_BEYOND
after INSERT ON datatrans.TEST_TRAGER
--after update  ON datatrans.TEST_TRAGER
BEGIN
  INSERT INTO tms.T_DTO_TEST_DEPT@BEYOND_DATABASE(id) VALUES('测试跨库触发器');
END;
3、执行sql语句
insert into TEST_TRAGER(id) values('sadfkjadsklsajdf');
commit;

4、订单详情添加的跨库触发器:
create or replace TRIGGER TRIGGER_INVOICE_DETAIL
AFTER INSERT ON datatrans.T_ORDER_INVOICE_DETAIL
FOR EACH ROW
declare
  RECEIVER_ID VARCHAR2(32);
  RECEIVER_NAME VARCHAR2(512);
  BILLCOUNT NUMBER(18,6);
  TURNOVERBOXAMOUNT NUMBER(18,6);
  TURNOVERBOXVOLUME NUMBER(18,6);
  WHOLEAMOUNT NUMBER(18,6);
  WHOLEVOLUME NUMBER(18,6);
  INVOICE_PRICE VARCHAR2(32 BYTE);
BEGIN
  --准备好门店编码、门店名称
  select
        o.SHOPCODE ,o.SHOPNAME ,o.BILLCOUNT ,o.TURNOVERBOXAMOUNT, o.TURNOVERBOXVOLUME, o.WHOLEAMOUNT,o.WHOLEVOLUME,o.RCV_INMONEY
  INTO
        RECEIVER_ID, RECEIVER_NAME, BILLCOUNT, TURNOVERBOXAMOUNT,TURNOVERBOXVOLUME,WHOLEAMOUNT,WHOLEVOLUME,INVOICE_PRICE
  from T_ORDER_INVOICE o WHERE o.BILLNO=:new.BILLNO;
  dbms_output.put_line(RECEIVER_ID);
  --将配送单号、商品编码、序号、单位、配送数量插入至TMS订单详情表
  --(原)订单编号、商品编码、商品序号、货品单位、货品数量
  INSERT INTO TMS.T_TMS_ORDER_DETAIL@BEYOND_DATABASE
    (ORDER_CODE,GOODS_CODE,GOODS_ONORDER_CODE,GOODS_UNIT,PRODUCT_NUMBER)
  VALUES
    (:new.BILLNO,:new.GDSINCODE,:new.GOODSLINENO,:new.BASEUNIT,:new.AMOUNT);
  --订单表
  INSERT INTO TMS.T_TMS_ORDER@BEYOND_DATABASE
    (ORDER_CODE,ORDER_STATE,RECEIVER_ID,RECEIVER_NAME,INVOICENO)
  VALUES
    (:new.SENDBILLNO,'22',RECEIVER_ID,RECEIVER_NAME,:new.SENDBILLNO);
  --出货单表
  INSERT INTO TMS.T_TMS_ORDER_INVOICE@BEYOND_DATABASE
     (INVOICENO,INVOICE_STATUS,SHOPCODE,SHOPNAME,BILLCOUNT,TURNOVERBOXAMOUNT,TURNOVERBOXVOLUME,WHOLEAMOUNT,WHOLEVOLUME,INVOICE_PRICE)
  VALUES
    (:new.SENDBILLNO,'22',RECEIVER_ID,RECEIVER_NAME,BILLCOUNT,TURNOVERBOXAMOUNT,TURNOVERBOXVOLUME,WHOLEAMOUNT,WHOLEVOLUME,INVOICE_PRICE);
  update T_ORDER_INVOICE oi set oi.ON_STATUS ='2' where oi.BILLNO = :new.BILLNO;
END;

5、测试
DECLARE
BEGIN
  insert into T_ORDER_INVOICE_DETAIL
  (ON_STATUS,AMOUNT,SENDSTD,BASEUNIT,GOODSLINENO,GDSINCODE,DEPTCODE,SENDBILLNO,BILLNO,ID)
  values
  ('22',10,1,1,'瓶','2222222','部门11','100100','2015080800000002',NULL);
  rollback;
END;

6、出货单详情删除的跨库触发器:
create or replace TRIGGER TRIGGER_INVOICE_DETAIL_DELETE
  --出货单详情删除
BEFORE DELETE ON datatrans.T_ORDER_INVOICE_DETAIL
FOR EACH ROW
BEGIN
  --根据指定的商品编码删除订单详情
  update TMS.T_TMS_ORDER_DETAIL@BEYOND_DATABASE set IS_DELETED='1' where GOODS_CODE=:new.GDSINCODE;
END;

© 著作权归作者所有

hello骡子
粉丝 1
博文 19
码字总数 7347
作品 0
昌平
程序员
私信 提问
oracle使用dblink跨库查询的例子

本文介绍了oracle数据库使用dblink进行跨库查询的方法,oracle dblink跨库查询教程,需要的朋友参考下。 oracle dblink跨库查询 方法一: 首先,创建数据库链接: 复制代码代码示例: CREATE ...

Carl_
2014/11/07
0
0
PostgreSQL如何实现跨数据库访问?

PostgreSQL数据库和Oracle类似,在逻辑上是相互独立的,如果要访问其他数据库,需要做跨库操作,Postgres本身提供了一些扩展,比如dblink,pgsql_fdw等能够实现跨数据库访问。 PG数据库的扩展...

libydwei2019
05/20
0
0
Database links

Oracle数据库链Database links的作用: 在一个用户下,可以获取到另外的用户下的表的数据。 使用的时机: 跨数据库或者跨用户使用时。 步骤: ① 创建好Oracle的服务(客户端连接服务器端的配...

士别三日
2013/05/22
992
16
oracle 数据库之间的连接

通过创建database link实现Oracle跨数据库查询的方法 在Oracle本地数据库端执行赋权dbuser帐号 SQL> grant create database link to dbuser; 配置本地数据库服务器的tnsnames.ora文件 $ vi $...

SKYCOBS
2016/01/29
14
0
oracle dblink创建

目的:oracle中跨数据库查询 两台数据库服务器dbA(本地)和dbB(远程192.168.1.100),dbA下用户usera 需要访问到dbB下userb的数据 解决:查询得知使用dblink(即database link 数据库链) 实现过...

wcczrx
2017/04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

重磅!容器集群监控利器 阿里云Prometheus 正式免费公测

Prometheus 作为容器生态下集群监控的首选方案,是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native C...

zhaowei121
26分钟前
2
0
Windows线程优先级

参考原文:https://www.cnblogs.com/forlina/archive/2011/08/10/2133438.html

极客行
29分钟前
2
0
聊聊前后端分离接口规范

1. 前言 随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端研发...

Java面经
32分钟前
2
0
go监控方案(7) -- 实现

metrics 客户端 数据采集使用go-metrics 传输使用UDP, 仿StatsD上传采集数据, InfluxDB进行数据存储, Grafana进行展示。 实现github 地址 https://github.com/solate/metrics 该地址有已经改...

solate
36分钟前
4
0
企业微信付款到零钱

企业微信付款到零钱,提示证书不存在,可能原因如下: 1. apiclient_cert.p12文件的绝对路径,或者如果放在项目中,请以classpath:开头指定

whatwhowhy
37分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部