创建一个 SQL 触发器
Creating a SQL trigger
我正在尝试使用 SQL 在我的数据库上创建一个触发器,这样在插入 table HISTORY
table 之后,如果属性FINISHED="T"
,MESSAGE
属性是 "FINISHED"
否则,如果 FINISHED="F"
,MESSAGE
是 "NOT FINISHED"
。
这是我当前的代码,当我尝试 运行 这个时,它说
"Trigger created with compilation errors"
有人能告诉我这个说法有什么问题吗?谢谢!
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;
/
我想这就是你的意图:
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;
请注意,这是一个 before 插入触发器,因为它打算修改正在插入的行。
我正在尝试使用 SQL 在我的数据库上创建一个触发器,这样在插入 table HISTORY
table 之后,如果属性FINISHED="T"
,MESSAGE
属性是 "FINISHED"
否则,如果 FINISHED="F"
,MESSAGE
是 "NOT FINISHED"
。
这是我当前的代码,当我尝试 运行 这个时,它说
"Trigger created with compilation errors"
有人能告诉我这个说法有什么问题吗?谢谢!
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;
/
我想这就是你的意图:
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;
请注意,这是一个 before 插入触发器,因为它打算修改正在插入的行。