【问题标题】:Using commit in Trigger in Oracle 11g在 Oracle 11g 的触发器中使用提交
【发布时间】:2016-12-06 18:10:52
【问题描述】:

我在 oracle 中创建了以下触发器-

create or replace TRIGGER TODAY_TD_INSERT AFTER INSERT ON table1 
FOR EACH ROW
DECLARE
BEGIN             
  INSERT INTO table2 (col1
  ,col2
  ,col3
  ) 
  VALUES (:NEW.,col1
  ,:NEW.,col2
  ,:NEW.,col3
  );
END;

因此,如果在表 1 中插入任何数据,则表 2 中也将插入相同的数据。所以我的问题是我需要在新 table2 中提交数据吗?到目前为止,我知道我们不能使用触发器的提交。

【问题讨论】:

  • 确实如此。您不能在触发器内提交。如果你想提交,你可以使用autonomous transaction,推荐not
  • 一个autonomous transaction 将适合记录尝试的insert,而与实际事务的成功无关。

标签: oracle


【解决方案1】:

不,你没有。对放置触发器的表进行更改的会话发出提交(或回滚),这适用于该会话所做的所有更改。

【讨论】:

    猜你喜欢
    • 2017-07-19
    • 1970-01-01
    • 2016-06-24
    • 2014-06-21
    • 2012-05-23
    • 1970-01-01
    • 2013-06-02
    • 2011-02-19
    • 1970-01-01
    相关资源
    最近更新 更多