Oracle更新后触发创建公共数据库链接

伊万·塔迪奇(Ivan Tadic)

我有一个错误:“ ORA-04092:无法在触发器中提交”在尝试在更新触发器后在一个简单的oracle中执行ddl命令时出现错误。列中的一个字段更新后,触发器需要创建公共数据库链接。来源如下:

create or replace
TRIGGER CreateLinkTrigger
after UPDATE of Year ON tableInit 
for each row
DECLARE
    add_link VARCHAR2(200);
BEGIN
IF :new.year = '2014'
then
    add_link := q'{create public database link p2014 connect to test14 identified by temp using 'ora'}';
    execute immediate add_link;
END IF;
END;

因此,如您所见,在新年激活后,我需要创建新的公共数据库链接。因此,当我尝试用年值'2014'更新表'tableInit'时,出现ORA-04092错误。有什么办法可以避免此错误,或者对此有其他解决方案?谢谢...

亚历克斯·普尔

快速创建数据库链接似乎是一件不寻常的事情。您的架构通常应该是静态且稳定的。但是,如果必须的话,将更新和链接包装在一个过程中或者只发出两个语句会更简单-大概执行更新的任何操作都受到了合理的控制,否则您将不得不处理触发此多次更新的多个人时代,那会更是一团糟。

您可能可以通过添加PRAGMA autonomous_transaction;触发器来完成此工作,如此答案中针对类似问题(创建视图而不是链接)所演示的那样,但是目前我无法对此进行测试。

create or replace
TRIGGER CreateLinkTrigger
after UPDATE of Year ON tableInit 
for each row
DECLARE
    add_link VARCHAR2(200);
    PRAGMA autonomous_transaction;
BEGIN
    ...

你也可以将触发提交异步作业的执行DDL,如所描述的这个答案,而且还有更多的例子在这个答案,在这里你会改变作业的匿名块做你的execute immediate

最好在维护时段内,按时间表或从过程中提前创建未来几年的链接。而不是尝试将架构更改与数据更改相关联。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更新后在DML触发器中调用对象成员函数(ORACLE数据库)

来自分类Dev

在数据库链接密码中创建Oracle数据库链接和字符

来自分类Dev

在Oracle中创建数据库链接时出错

来自分类Dev

使用Groovy创建Oracle数据库链接

来自分类Dev

创建操作后更新数据库不起作用

来自分类Dev

从表触发触发器后如何创建新数据库

来自分类Dev

数据库触发后刷新实体

来自分类Dev

数据库触发器在子表更新后更新父表上的行

来自分类Dev

通过链接更新数据库

来自分类Dev

在mssql上创建表后的数据库触发器

来自分类Dev

触发HTTP云功能后更新数据库中的用户状态-条带检出

来自分类Dev

插入后如何防止数据库触发器更新@@ identity

来自分类Dev

更新后将触发器添加到数据库中的所有表

来自分类Dev

在数据库中删除或插入后如何触发 Jtable 更新?

来自分类Dev

触发器为什么不更新Oracle数据库中的列值?

来自分类Dev

更新数据库不创建数据库

来自分类Dev

如何在两个Oracle RDS实例之间创建数据库链接

来自分类Dev

拖放操作后更新数据库

来自分类Dev

交易后如何更新数据库?

来自分类Dev

在Ruby on Rails中创建链接以更新特定的数据库条目

来自分类Dev

从Oracle数据库表创建JSON

来自分类Dev

在oracle数据库中创建序列

来自分类Dev

Oracle Coherence后写式高速缓存和手动数据库更新

来自分类Dev

更新数据库更新后显示的数据

来自分类Dev

更新Postgres.app和重新创建数据库后,无法创建和更新记录

来自分类Dev

postgres 9.3数据库触发器创建

来自分类Dev

更新SQL语句未触发到数据库

来自分类Dev

集成 firebase 数据库后链接器错误

来自分类Dev

是否可以在Oracle Express 11g数据库与SQL Server之间创建数据库链接,还是我需要完整的11g?

Related 相关文章

  1. 1

    更新后在DML触发器中调用对象成员函数(ORACLE数据库)

  2. 2

    在数据库链接密码中创建Oracle数据库链接和字符

  3. 3

    在Oracle中创建数据库链接时出错

  4. 4

    使用Groovy创建Oracle数据库链接

  5. 5

    创建操作后更新数据库不起作用

  6. 6

    从表触发触发器后如何创建新数据库

  7. 7

    数据库触发后刷新实体

  8. 8

    数据库触发器在子表更新后更新父表上的行

  9. 9

    通过链接更新数据库

  10. 10

    在mssql上创建表后的数据库触发器

  11. 11

    触发HTTP云功能后更新数据库中的用户状态-条带检出

  12. 12

    插入后如何防止数据库触发器更新@@ identity

  13. 13

    更新后将触发器添加到数据库中的所有表

  14. 14

    在数据库中删除或插入后如何触发 Jtable 更新?

  15. 15

    触发器为什么不更新Oracle数据库中的列值?

  16. 16

    更新数据库不创建数据库

  17. 17

    如何在两个Oracle RDS实例之间创建数据库链接

  18. 18

    拖放操作后更新数据库

  19. 19

    交易后如何更新数据库?

  20. 20

    在Ruby on Rails中创建链接以更新特定的数据库条目

  21. 21

    从Oracle数据库表创建JSON

  22. 22

    在oracle数据库中创建序列

  23. 23

    Oracle Coherence后写式高速缓存和手动数据库更新

  24. 24

    更新数据库更新后显示的数据

  25. 25

    更新Postgres.app和重新创建数据库后,无法创建和更新记录

  26. 26

    postgres 9.3数据库触发器创建

  27. 27

    更新SQL语句未触发到数据库

  28. 28

    集成 firebase 数据库后链接器错误

  29. 29

    是否可以在Oracle Express 11g数据库与SQL Server之间创建数据库链接,还是我需要完整的11g?

热门标签

归档