我一般都是触发器和PL / SQL的新手。我的测试目的是使用Oracle Database Express和自己的命令行。
应该创建触发器的脚本如下所示:
CREATE OR REPLACE TRIGGER SESSION_LOGIN_HANDLER
AFTER UPDATE OF LOGGED_IN ON BENUTZERKONTO
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
BEGIN
if (:OLD.LOGGED_IN == 1)
if (:NEW.LOGGED_IN == 0)
{
UPDATE SESSION_LOGGING AS current_session SET DAUER = (sysdate-ZEITSTEMPEL) WHERE DAUER IS NULL AND SECURE_IDENTIFIER = :NEW.SECURE_IDENTIFIER;
}
END;
commit;
我用@C调用它:/ SQL ... / DB_TRIGGER.trg;在命令行中。 然而,在调用它之后,命令行似乎只是在每次按下时计算行号。 似乎它以某种方式等待另一条线或任何东西,但我不知道>< 也没有失败的消息或任何东西。 我甚至评论了" BEGIN"之间的整个代码。和"结束"没有区别!
有人可以帮助这个初学者吗?提前谢谢!
答案 0 :(得分:2)
没有Oracle语法,它必须是这样的:
if (:OLD.LOGGED_IN = 1) then
if (:NEW.LOGGED_IN = 0) then
UPDATE SESSION_LOGGING AS current_session SET DAUER = (sysdate-ZEITSTEMPEL)
WHERE DAUER IS NULL AND SECURE_IDENTIFIER = :NEW.SECURE_IDENTIFIER;
end if;
end if;