在oracle中更改另一个字段的值时更改表字段的值

时间:2014-03-25 11:57:18

标签: sql oracle plsql triggers

我在oracle数据库中有一个表,它有两个字段:statusnotesstatus字段只有3个实际值:active, not-active, removed

  • statusactive时,默认情况下notes字段中没有任何内容。

  • 如果status更改为not-active,则notes将输入值。 由用户

  • 如果status更改回active,我需要删除notes字段值。

我之前从未使用触发器对我来说这有点复杂,但这就是我所拥有的:

CREATE TRIGGER update_notes
AFTER UPDATE ON table1
FOR EACH ROW
BEGIN
IF status = 'Active' THEN UPDATE table1 SET notes = '';
END IF;
END;

但它失败了......我错过了什么?

2 个答案:

答案 0 :(得分:3)

不要使用update语句,只需指定值:

CREATE TRIGGER update_notes
BEFORE UPDATE ON table1
FOR EACH ROW
BEGIN
  IF :new.status = 'Active' THEN 
     :new.notes = null;
  END IF;
END;

顺便说一句:表格有,而不是“字段”

答案 1 :(得分:0)

请你试试下面..

CREATE TRIGGER update_notes     
AFTER UPDATE ON table1
FOR EACH ROW
BEING
  IF :NEW.status = 'Active' THEN
     :NEW.notes = '';
  END IF;
END;
/