Oracle 在更新表后创建要插入的触发器

Oracle 在更新表后创建要插入的触发器,oracle,triggers,Oracle,Triggers,创建一个名为trigger\u contact\u af\u update的触发器,该触发器在contact表更新时触发。更新联系人详细信息后,此触发器将把组织名称和操作插入表联系人日志\u历史记录。受影响的日志表联系人\u日志\u历史记录中的操作名称为“更新联系人后” 提示: 触发器名称:触发器\u联系人\u af\u更新 表名称:联系人记录历史记录 字段名称:组织名称、操作 操作:“更新联系人后” contact\u log\u history的表结构如下: org_name Varch

创建一个名为
trigger\u contact\u af\u update
的触发器,该触发器在
contact
表更新时触发。更新联系人详细信息后,此触发器将把组织名称和操作插入表
联系人日志\u历史记录
。受影响的日志表
联系人\u日志\u历史记录
中的操作名称为
“更新联系人后”

提示:

  • 触发器名称:触发器\u联系人\u af\u更新
  • 表名称:联系人记录历史记录
  • 字段名称:组织名称、操作
  • 操作:“更新联系人后”
contact\u log\u history
的表结构如下:

org_name Varchar(30)
action Varchar(30)
我写了下面的触发器,但没有创建错误或触发器

CREATE OR REPLACE TRIGGER trigger_contact_af_update AFTER UPDATE 
    ON contact_log_history FOR EACH ROW 
DECLARE 
    org_name VARCHAR(30);
    action VARCHAR(30);
BEGIN 
    if (:new.action == 'After_Update_Contact') 
    then 
        INSERT INTO contact_log_history (org_name, action) 
        values (:new.org_name, :new:action);
    end if ;
END;
你应该使用

SHOW ERRORS 

从用户错误中选择*

在编译过程/函数/触发器期间检查错误

在解决问题和避免变量后,这里有一个工作触发器

CREATE  OR replace TRIGGER contact_af_update AFTER 
UPDATE 
ON contact FOR EACH ROW 
DECLARE 
BEGIN 
  IF (:new.action = 'After_Update_Contact') THEN 
    INSERT INTO contact_log_history 
                ( 
                            org_name, 
                            action 
                ) 
                VALUES 
                ( 
                            :new.org_name, 
                            :new.action 
                ); 

  END IF ; 
END;
/

您的作业要求跟踪
联系人
表中的更改,但出于某种原因,您已在
联系人日志历史记录
上构建了触发器。如果您在正确的表上构建它,您可能会获得更大的成功。对于
:new.action=='After\u Update\u Contact'
尝试了以下操作,但仍然没有创建触发器,将双方程(
=
)替换为单方程(
=
)。为每行的联系人更新后创建或替换触发器联系人,声明组织名称VARCHAR(30);行动方案(30);如果(:new.action='After\u Update\u Contact'),则开始,然后将值(:new.org\u name,:new:action)插入到联系人日志(org\u name,action)历史记录中;如果结束;结束;请检查我的答案,如果它对您有帮助,请接受,或者为给定的解决方案提供相关反馈(评论)。请阅读:了解为什么它很重要。