我正在尝试使用SQL在我的数据库上创建一个触发器,这样在插入表HISTORY
表后,如果属性FINISHED="T"
,则MESSAGE
属性为"FINISHED"
其他,如果FINISHED="F"
,则MESSAGE
为"NOT FINISHED"
。
这是我目前在尝试运行时的代码,它说
"使用编译错误"
创建触发器
有人可以告诉我这个陈述有什么问题吗?谢谢!
CREATE OR REPLACE TRIGGER MESSAGE_TR
AFTER INSERT
ON HISTORY
FOR EACH ROW
BEGIN
IF (HISTORY.FINISHED="T")
THEN
INSERT INTO HISTORY(MESSAGE) VALUES("FINISHED");
ELSEIF (HISTORY.FINISHED="F")
INSERT INTO HISTORY(MESSAGE)VALUES("NOT FINISHED");
END;
/
答案 0 :(得分:2)
我认为这是你想要的:
CREATE OR REPLACE TRIGGER MESSAGE_TR
BEFORE INSERT
ON HISTORY
FOR EACH ROW
BEGIN
:NEW.MESSAGE := (CASE WHEN :NEW.FINISHED = 'T' THEN 'FINISHED' ELSE 'NOT FINISHED' END);
END;
请注意,这是之前的插入触发器,因为它打算修改要插入的行。