我在oracle数据库中有一个表,其中有两个字段:status
和notes
。 status
字段只有3个实际值:active, not-active, removed
。在oracle中更改另一个字段的值时更改表字段的值
当
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;
但它没有。什么我错过了?
现在我已经完全不同了:04084. 00000 - “无法更改此触发的NEW值r类型“ *原因:只能在行 插入或更新触发器之前更改新的触发器变量。 *操作:更改触发器类型或删除变量引用 – Dims
@ user3065540:抱歉,我没有看到您正在使用“AFTER”触发器。当然,您需要使用'BEFORE'触发器(请参阅我的编辑) –
谢谢a_horse_with_no_name!这一个:CREATE TRIGGER update_notes BEFORE UPDATE ON VP_DET FOR EACH ROW BEGIN IF:new.VP_STATUS = '有效' THEN :new.VP_STATUS_NOTES:= ''; END IF; END;成功了! – Dims