搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家自动化
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
sqoop (Hadoop(Hive)与传统的数据库(mysql..)间进行数据的传递工具) 基础概念_在 hadoop 和传统数据库之间进行大数据传输,可以使用
2
Java官网下载JDK17版本详细教程(下载、安装、环境变量配置)_java17
3
SpringBoot + ShardingSphere实现读写分离,分库分表_shardingsphere 分库分表和读写分离的配置
4
内容安全复习 8 - 视觉内容伪造与检测
5
微信小程序制作 购物商城首页 【内包含源码】_微信小程序购物商城源码
6
力扣114. 二叉树展开为链表
7
Spring Cloud Alibaba(三)Sentinel限流实现原理_sphu.entry 限流
8
数据结构与人工智能: 如何实现高效的知识图谱和自然语言处理
9
燕山大学——软件用户界面设计(八)原型设计_界面原型设计
10
OLTP VS OLAP VS HTAP_olap oltp htap
当前位置:
article
> 正文
关于触发器、存储过程和DBlink的综合运用
作者:我家自动化 | 2024-07-03 01:52:42
赞
踩
存储过程和dblink的联合使用
关于触发器、存储过程和DBlink的综合运用
需求描述:
需要在两个不同oracl数据库实例中进行数据逻辑处理。如果A实例中的表有新数据插入或者数据更新,那么在B实例中执行与之相关的存储过程。
先假设A数据用户中表TEST有变动,那么触发器触发调用实例B中的存储过程改写TEST_LOG表
A中操作如下:
1.建表
-------------------------------------------------------------------
create table TEST
(
T_ID NUMBER(4),
T_NAME VARCHAR2(20),
T_AGE NUMBER(2),
T_SEX CHAR(1)
);
-------------------------------------------------------------------
2.建立与B对应的DBLINK
-------------------------------------------------------------------
create database link INFOSYSTEM
connect to infosystem identified by infosystem
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.249)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)';
------------------------------------------------------------------
3.建立触发器
------------------------------------------------------------------
CREATE OR REPLACE TRIGGER test_trigger
AFTER DELETE OR INSERT OR UPDATE ON test
DECLARE
v_type VARCHAR2(15);
BEGIN
IF INSERTING THEN
v_type := 'INSERT';
DBMS_OUTPUT.PUT_LINE('记录已经成功插入,并已记录到日志');
ELSIF UPDATING THEN
v_type := 'UPDATE';
DBMS_OUTPUT.PUT_LINE('记录已经成功更新,并已记录到日志');
ELSIF DELETING THEN
v_type := 'DELETE';
DBMS_OUTPUT.PUT_LINE('记录已经成功删除,并已记录到日志');
END IF;
my_pro@infosystem(v_type);
END;
----------------------------------------------------------------
B中操作如下:
1.建表
----------------------------------------------------------------
create table TEST_LOG
(
L_USER VARCHAR2(15),
L_TYPE VARCHAR2(15),
L_DATE VARCHAR2(30)
);
----------------------------------------------------------------
2.建存储过程
注意一定要加上PRAGMA AUTONOMOUS_TRANSACTION;让这个存储过程有自治的事务控制,不然会影响A的事务控制
----------------------------------------------------------------
create or replace procedure my_pro(v_type varchar2)
as
PRAGMA AUTONOMOUS_TRANSACTION;
begin
INSERT INTO test_log VALUES(user,v_type,
TO_CHAR(sysdate,'yyyy-mm-dd hh24:mi:ss'));
commit;
end;
---------------------------------------------------------------
最后我们在A中输入以下测试语句:
INSERT INTO test VALUES(101,'zhao',22,'M');
UPDATE test SET t_age = 30 WHERE t_id = 101;
DELETE test WHERE t_id = 101;
SELECT * FROM test;
SELECT * FROM test_log@INFOSYSTEM;
结果可能如下:
TEST无数据
TEST_LOG数据
1 AAAPF0AALAAABq8AAA INFOSYSTEM DELETE 2009-06-12 13:45:30
2 AAAPF0AALAAABq8AAL INFOSYSTEM INSERT 2009-06-12 13:45:30
3 AAAPF0AALAAABq8AAM INFOSYSTEM UPDATE 2009-06-12 13:45:30
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家自动化/article/detail/781607
推荐阅读
article
PostgreSQL
事件
触发器
_pg
触发器
dblink
perform
...
和oracle类似,pg中
触发器
除了支持普通的dml
触发器
,还支持ddl语句,便是通过
事件
触发器
实现的。
事件
触发器
,当数...
赞
踩
article
【
PostgreSQL
】Postgres
数据库
安装
、配置、
使用
DBLink
详解_
postgresql
...
本博文首先介绍了
DBLink
的需求背景,然后展示了在
PostgreSQL
数据库
下
DBLink
的
安装
配置。
安装
完成后
使用
几...
赞
踩
article
测试
DBLINK
触发器
事务_pg
触发器
dblink
perform
...
STEP1:在数据库TW中创表conn system/passwd@tw;create user test identi...
赞
踩
article
Oracle数据库中
触发
器
包含
dblink
_
blob
dblink
触发
...
Oracle数据库中
触发
器
包含
dblink
1、 基本概念a)
触发
器
trigger:
触发
器
在数据库里以独立的对象存储,它...
赞
踩
article
Kingbase
触发器
跨库
设置(
dblink
)
_
如何查看
dblink
是否
连接
...
参考:https://www.cnblogs.com/lottu/p/13331387.html目录1、安装
dblink
...
赞
踩
相关标签
sql
数据库
postgresql
dba
dblink
测试
insert
table
user
database
kingbase 触发器
kingbase dblink