Plsql 当我创建一个触发器时,它会给出一个错误,表示它无效并且重新验证失败

Plsql 当我创建一个触发器时,它会给出一个错误,表示它无效并且重新验证失败,plsql,triggers,Plsql,Triggers,我尝试更新client_master表,但它给出了一个错误Idk why。我确实更新了client_master set name='abc'where name='xyz' create or replace trigger client_audit before update or delete on client_master for each row begin case when updating then insert into

我尝试更新client_master表,但它给出了一个错误Idk why。我确实更新了client_master set name='abc'where name='xyz'

  create or replace trigger client_audit before update or delete on client_master for each row
begin
    case 
        when updating then
            insert into audit_client values(:OLD.c_no,:OLD.name,:OLD.address,:OLD.bal_due,'upd','1',sysdate);
        when deleting then
            insert into audit_client values(:OLD.c_no,:OLD.name,:OLD.address,:OLD.bal_due,'delet','2',sysdate);
    end case;
end;
/

试试这个解决方案。希望这有帮助

CREATE OR REPLACE TRIGGER client_audit before
  UPDATE OR
  DELETE ON client_master FOR EACH row 
  DECLARE
  BEGIN 
  IF UPDATING THEN
  INSERT
  INTO audit_client VALUES
    (
      :OLD.c_no,
      :OLD.name,
      :OLD.address,
      :OLD.bal_due,
      'upd',
      '1',
      sysdate
    );
ELSIF DELETING THEN
  INSERT
  INTO audit_client VALUES
    (
      :OLD.c_no,
      :OLD.name,
      :OLD.address,
      :OLD.bal_due,
      'delet',
      '2',
      sysdate
    );
END IF;
END;
/

如果你认为这回答了问题,你应该解释你的推理。i、 e.您认为
case
语句有问题吗?错误消息是什么?