我在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