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
...
總結
以上是生活随笔為你收集整理的oracle提交数据按键,Oracle PLSQL - 仅提交数据库链接(Oracle PLSQL - Commit only database link)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Window 窗口层次关系
- 下一篇: WebBrowser介绍——Javasc