列更新时的Oracle SQL触发器

Jam*_*lor 15 sql oracle

我正在尝试为我的表创建一个触发器,它根据某个标志设置为'Y'的时间自动添加一个发布日期

我没有太多创建触发器的经验,但到目前为止,这就是我所拥有的

  create or replace
  TRIGGER ADD_CREATE_DT 
  after UPDATE of approved ON articles 
  for each row
  BEGIN
  :new.create_dt := sysdate where approved = 'Y';
  END;
Run Code Online (Sandbox Code Playgroud)

更新列时出现此错误

触发器'USER.ADD_CREATE_DT'无效且重新验证失败

有任何想法吗?

谢谢

Ton*_*ews 25

使用WHEN子句:

create or replace
  TRIGGER ADD_CREATE_DT 
  after UPDATE of approved ON articles 
  for each row
  when (new.approved = 'Y')
  BEGIN
  :new.create_dt := sysdate;
  END;
Run Code Online (Sandbox Code Playgroud)

或使用IF:

create or replace
  TRIGGER ADD_CREATE_DT 
  after UPDATE of approved ON articles 
  for each row
  BEGIN
  if :new.approved = 'Y' then
   :new.create_dt := sysdate;
  end if;
  END;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,WHEN更合适和有效.