【问题标题】:ORACLE SQL: After Update TriggerORACLE SQL:更新后触发
【发布时间】:2018-02-05 15:07:35
【问题描述】:

问题陈述:

创建一个名为trigger_contact_af_update 的触发器,只要更新contact 表就会触发该触发器。此触发器将在更新联系人详细信息后将org_name 和操作插入到表contact_log_history 中。受影响的日志表contact_log_history 中的操作名称为After_Update_Contact

我现在的查询是:

CREATE OR REPLACE TRIGGER  trigger_contact_af_update
AFTER UPDATE ON contact
FOR EACH ROW
BEGIN
INSERT INTO contact_log_history (org_name, action) Values (:OLD.org_name, 'After_Update_Contact');
END;

但它不起作用。谁能告诉我为什么?

contact_log_history 表只有两列。

【问题讨论】:

  • "It's not working" 不是有效的 Oracle 错误消息。
  • 我没有收到任何错误消息。触发器根本不做任何事情。
  • 嗯,请您试试看:ALTER TRIGGER trigger_name ENABLE;
  • 能否给出contact_log_history表的定义?
  • @Sagi 触发器已启用

标签: sql oracle oracle11g triggers


【解决方案1】:

使用 :OLD 变量仅在使用前触发器时有效。我建议你在你的情况下这样做。

CREATE OR REPLACE TRIGGER  trigger_contact_af_update
BEFORE UPDATE ON contact
FOR EACH ROW
BEGIN
INSERT INTO contact_log_history (org_name, action) Values (:old.org_name, 'After_Update_Contact');
END;

【讨论】:

  • 更新联系人集 Org_name = 'some' where ID =1;
  • 你可以更新没有任何错误?您的数据库服务器是否使用 Linux 等区分大小写的系统?
  • 是的,是的,我可以……而且不只是在 Win7 上
  • 等一下,我会在测试服务器上检查一下
  • 触发器编译成功了吗?
猜你喜欢
  • 2018-04-30
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 2013-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
相关资源
最近更新 更多