为装运状态更新创建Oracle触发器

为装运状态更新创建Oracle触发器,oracle,triggers,Oracle,Triggers,我需要创建一个名为“Shipping_status_af_update”的触发器,该触发器在Shipping_status表更新时触发。 此触发器将在更新装运状态详细信息后,将名称和操作插入表“status\u log\u history”。 受影响的日志表status\u log\u history中的操作名称为'After\u Update\u shipping\u status' Hints: Trigger name : shipment_status_af_update Table n

我需要创建一个名为“Shipping_status_af_update”的触发器,该触发器在Shipping_status表更新时触发。 此触发器将在更新装运状态详细信息后,将名称和操作插入表“status\u log\u history”。 受影响的日志表status\u log\u history中的操作名称为'After\u Update\u shipping\u status'

Hints:
Trigger name : shipment_status_af_update
Table name : status_log_history
Field names :name, action
Action  : 'After_Update_Shipment_Status'.
Hint: Add / after the end statement
我的代码是:

CREATE or REPLACE TRIGGER shipment_status_af_update
AFTER UPDATE on shipment_status FOR EACH ROW declare
BEGIN

insert into status_log_history  (name,action) 
values(:new.name,'After_Update_Shipment_Status');

END;
/
结果:
警告:创建的触发器有编译错误。

如果两个表都存在并且包含您在触发器中使用的名称,则代码将编译:

SQL> create table shipment_status (name varchar2(20));

Table created.

SQL> create table status_log_history(name varchar2(20), action varchar2(30));

Table created.

SQL> create or replace trigger shipment_status_af_update
  2    after update on shipment_status
  3    for each row
  4  declare
  5  begin
  6    insert into status_log_history (name, action)
  7    values (:new.name, 'After_Update_Shipment_Status');
  8  end;
  9  /

Trigger created.

SQL>

显示错误告诉您什么?在不知道实际错误的情况下,很难建议您做什么…删除
declare
declare没有问题,@Suresh。触发器编译时可以使用触发器,也可以不使用触发器。装运状态表是否有列
name