oracle提交数据按键,Oracle PLSQL - 仅提交数据库链接(Oracle PLSQL - Commit only database link)...

Oracle PLSQL - 仅提交数据库链接(Oracle PLSQL - Commit only database link)

有没有办法只通过数据库链接而不是当前会话的数据提交在表上插入/更新的数据? 或者他们被认为是同一个?

例如:

INSERT INTO main_database.main_table(value1, value2)

VALUES (1 , 2)

INSERT INTO database.table@database_link(value3, value4)

VALUES (3 , 4)

并仅为数据库链接表提交?

关于我为什么要这样做的背景:主数据库用于(多个)记录,而数据库链接用于(货币)事务(在单独的服务器上处理)。 我想首先更新记录以检查是否有任何约束失败,但是在事务完成之前不提交数据。 如果事务失败,我想回滚记录以省去删除/撤消插入/更新的工作,这可能会变得混乱。

我假设没有,但我希望有办法。 提前致谢。

Is there a way to commit only the data inserted/updated on a table through a database link and not the data of the current session? Or are they considered one and the same?

For example:

INSERT INTO main_database.main_table(value1, value2)

VALUES (1 , 2)

INSERT INTO database.table@database_link(value3, value4)

VALUES (3 , 4)

And do a commit for only the database link table?

Background on why I would want to do this: The main database is for (multiple) records while the database link is for (monetary) transactions (processed on a separate server). I want to update the records first to check to see if any of the constraints fail, but not commit the data until the transaction is complete. If the transaction fails, I want to rollback the records to save me the effort of deleting/undoing inserts/updates which could get messy.

I am assuming there is not but I am hoping that there is a way. Thanks in advance.

原文:https://stackoverflow.com/questions/36560057

更新时间:2019-12-06 06:51

最满意答案

create or replace procedure proc_1 ( i IN number )

as

PRAGMA AUTONOMOUS_TRANSACTION;

BEGIN

INSERT INTO test_table@remote_sid (id, description)

VALUES (i, 'Description for ' || i);

COMMIT;

END;

/

create or replace procedure proc_base ( i IN number )

as

begin

insert into local_tab (id) values (i);

proc_1( i );

rollback;

end;

/

create or replace procedure proc_1 ( i IN number )

as

PRAGMA AUTONOMOUS_TRANSACTION;

BEGIN

INSERT INTO test_table@remote_sid (id, description)

VALUES (i, 'Description for ' || i);

COMMIT;

END;

/

create or replace procedure proc_base ( i IN number )

as

begin

insert into local_tab (id) values (i);

proc_1( i );

rollback;

end;

/

2016-04-11

相关问答

oracle安装客户端工具pl/sql的目的是方便数据库的管理。 mysql也是一样的道理。安装phpMyAdmin或者Navicat,也是方便数据库的管理。

PLSQL developer是编写SQL的工具 ORACLE是数据库软件

1、在Oracle的安装目录下找到tnsnames.ora。 2、在这个文件中填写连接数据库的配置信息。 DEMO = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.11.110)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = DEMO) ) )

左外连接用left join,右外连接用right join语句。 比如 Oracle: select * from a, b where a.id=b.id(+) SQL: select * from a left join b on a.id=b.id 反过来a.id(+)=b.id 就是right join

create or replace procedure proc_1 ( i IN number )

as

PRAGMA AUTONOMOUS_TRANSACTION;

BEGIN

INSERT INTO test_table@remote_sid (id, description)

VALUES (i, 'Description for ' || i);

COMMIT;

END;

/

create or replace procedure proc_base ( i I

...

你没错,因为存在XML标题而出错。 解决方法是使用XMLParse(document ...)来解析XML: select xmlparse(document UTL_HTTP.REQUEST(URL => 'http://xkcd.com/rss.xml'))

into v_xml

from dual;

示例SQLFiddle与xkcd.com的结果。 请注意,根据文档, HTTP_UTIL.Request函数仅返回服务器响应的前2000个字节,因此您可以使用此类请求获取不完整的XML。

...

我一直与甲骨文一起工作了20年,从未见过使用令人满意的代码管理系统。 然而,在过去的一年里,我一直致力于Ruby on Rails应用程序,分布式版本控制系统“git”通过gitflow进行了扩展,以帮助形式化代码分支(主,开发,特性,修补程序等)和部署数据库PostgreSQL)使用rake进行迁移。 我真的希望我有机会将它们与Oracle代码一起使用,因为它确实能够剔除我需要的每个框。 I've been working with Oracle for something like 20 ye

...

数据库独立性是使用JDBC的好理由。 假设您的Web应用程序需要为无法支付Oracle费用的客户运行,您需要做多少工作才能移植到开源数据库? Database independence is good reason for using JDBC. Let's say that your web application needs to run for a customer that cannot pay for Oracle, how much work will you need to do t

...

虽然我理解您解决了语法问题,但我认为我可能会提出两种方法来推进最佳实践: 显示加入 在连接查询中的表时使用当前的ANSI语法。 现在,您的SQL使用旧的,不推荐使用的隐式连接( WHERE子句中使用的键)与使用显式连接的当前ANSI标准( INNER JOIN...ON使用的键)。 虽然这在性能方面对查询优化器没有任何影响(参见SO帖子 ),但使用INNER JOIN往往更具可读性和可维护性,特别是如果您有各种WHERE条件需要管理。 下面是尝试使用INNER JOIN子句转换您的查询。 请在使用

...

SQL - 结构化查询语言 - 是查询关系数据库的“标准”语言。 大多数(如果不是全部)RDBMS供应商都支持SQL,或者确切地说是他们自己的SQL 版本 。 即使从80年代开始按ANSI标准化,也很少达到100%的合规性。 许多RDBMS接受特定于供应商的SQL扩展。 换句话说,Oracle的SQL和SQLite的实现并不完全相同。 但核心语言是一样的。 这就是为什么你经常/有时为这两种产品编写相同的查询。 另一方面, PL / SQL是Oracle 专有的程序语言。 它由Oracle Corp

...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle ado6,c# ado 连接数据库 六步曲

建立连接分为六步:1.定义连接字符串,oracle 的连接字符串为:private static string connString "Data Source192.168.1.130:1521/mydata;Persist Security InfoTrue;User IDem_test;Passwordtest123;UnicodeTrue";2.根据连接字符串…

java中数组遍历的三种方式

1.for循环遍历 通常遍历数组都是使用for循环来实现。遍历一维数组很简单,遍历二维数组需要使用双层for循环,通过数组的length属性可获得数组的长度。 2.Arrays工具类中toString静态方法遍历 利用Arrays工具类中的toString静态方法可以将一维数组转化为…

127.0.0.1 myz.php,XXE漏洞总结 · MYZ’s Blog

就先以这次校赛的例子作为开头吧ctf首先说一说这次的题:这一次的题是一种回显式的xxe,但是过滤了ENTITY参数.(有点难以判别)贴出源码:1234567891011121314151617181920212223242526272829303132libxml_disable_entity_loader(false);$user1 $_POST[user1];$xmlfile…

mysql中union 查询

mysql中union 查询 UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。 从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的…

oracle内存表与临时表,Oracle 临时表之临时表空间组(TTG)

环境:sysORCL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdPL/SQL Release 10.2.0.1.0 - ProductionCORE 10.2.0.1.0 Producti…

修改TOMCAT的JVM虚拟机内存大小几种方式

修改TOMCAT的JVM虚拟机内存大小几种方式 Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。 经常会出现Java.lang.OutOfMemoryError: Java heap space 即JVM Heap溢出的错误。 对此有以下几种方法可以选…

oracle数据库read only,oracle 报错Linux-x86_64 Error: 30: Read-only file system

本帖最后由 ccton 于 2014-2-18 12:08 编辑[root**** hydata]# cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 5.6 (Tikanga)[root**** hydata]# uname -aLinux gywsj.hyb210 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU…

sql中in和exist语句的区别?

两者都能实现表功能查询,主要区别如下: 1、适用表的类型不同。 in是子查询为驱动表,外面的表为被驱动表,故适用于子查询结果集小而外面的表结果集大的情况。 exists是外面的表为驱动表,子查询里面的表为被驱动表&am…

织梦task_do.php,织梦20160906更新后栏目空白问题

织梦发布了20160906更新,dedecmsv5.7已经很久没有更新了,看到这个更新后心中突然感动强烈的兴奋,虽然早有准备这只是个小小的更新!本次更新内容:dede/makehtml_list_action.php,优化更新列表页速度,建议在后…

linux shell 执行目录,bash shell脚本执行的几种方法

bash shell 脚本执行的方法有多种,本文作一个总结,供大家学习参考。假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限。方法一:切换到shell脚本所在的目录(此时,称为工作目录)…

Java 源码--Arrays

前言 数组比较特殊,一个数组属于一个对象,但是它的创建方式却不同于一般对象。 Java中的数组创建数组有以下三种方式: // 第一种 int[] array new int[5]; // 第二种 int[] array {1, 2, 3, 4, 5}; // 第三种 int[] array new int[]{1,…

HashMap原理深入理解

hashing(哈希法)的概念 散列法(Hashing)是一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法,称为散列法,也叫哈希法。由于通过更短的哈希值比用原始值进行数据库搜索更快&#…

linux终端转到目录,linux下目录及终端学习

linux目录按调用分为相对路径与绝对路径相对路径:从当前路径下查找查找目标也可使用./调用当前目录下文件或者../调用上一层目录中文件,可通过pwd查看当前路径绝对路径:从根目录出发查找文件。执行cat /etc/passwd命令时由于引用绝对路径&…

HashMap的底层原理

一&#xff1a;HashMap的节点&#xff1a;HashMap是一个集合&#xff0c;键值对的集合,源码中每个节点用Node<K,V>表示 static class Node<K,V> implements Map.Entry<K,V> {final int hash;final K key;V value;Node<K,V> next;Node是一个内部类&…

linux 远程调试文件夹,GDB远程调试开发板程序

一、概述可能我们都熟悉直接在发行版linux系统下调试系统&#xff0c;只需要在安装系统的时候包含了调试工具&#xff0c;直接可以根据gdb进行调试。但对于很多做嵌入式的来说&#xff0c;可能经常需要调试运行在开发板上的应用程序&#xff0c;下面就来说说。先说一下我们的调…

linux必备工具,Linux装机必备工具

分类 名称 类比 说明压缩工具 RAR for Linux WinRAR Linux中压缩解压RAR格式文件的工具联络聊天 EVA QQ 一个界面、使用 类似QQ的聊天工具。MP3 播放 XMMS WinAmp Linux中MP3播放器下载工具 Downloader4X FlashGet Linux中的多线程下载利器流媒体播放 RealPlayer 10 RealPlaye…

hashMap 底层原理+LinkedHashMap 底层原理+常见面试题

1.源码 java1.7 hashMap 底层实现是数组链表 java1.8 对上面进行优化 数组链表红黑树 2.hashmap 是怎么保存数据的。 在hashmap 中有这样一个结构 Node implenets Map.entity{hashkeyvaluenext} 当我们向hashMap 中放入数据时&#xff0c;其实就是一个 Enity{keyvaue}在存之…

linux时间跳变影响,MONGO 集群 修改linux主机时间后的影响

生产环境是一主一从一仲裁3分片的集群&#xff0c;现在发现其中一个节点比当前时间大了好几天&#xff0c;后使用NTP将时间往回调整副本集上。原来时间是5月3日&#xff0c;当前是4月26日&#xff0c;对此进行了调整。[rootcwdtest1 bin]# dateFri May 3 13:20:31 CST 2019[ro…

Java容器解析——HashMap

前言 HashMap是一个散列表&#xff0c;它存储的内容是键值对(key-value)映射。 1 定义 public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable {}由HashMap定义可以看出 1&#xff09; HashMap<K,V>表示…

linux教程第五版第三章课后答案,linux 第三章 章习题.doc

填空题Linux_____可以理解为运行在_____之上&#xff0c;回避直接操作_____和配置文件的应用程序。在Linux中常见的两种图形环境是_____和______。在Linux中的配置文件为____和_____。在Fedor8.0中可以通过____窗口进行主题设置。在“自定义主题”对话框中可以对“控件”、“颜…