我在oracle数据库中有一个表,它有两个字段:status
和notes
。 status
字段只有3个实际值:active, not-active, removed
。
当status
为active
时,默认情况下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;
但它失败了......我错过了什么?
答案 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;
/