【问题标题】:Creating a SQL trigger创建 SQL 触发器
【发布时间】:2017-10-09 23:03:55
【问题描述】:

我正在尝试使用 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;
/

【问题讨论】:

  • 您使用的是 MySQL 还是 Oracle?该代码不会在它们两者上运行。
  • @jarlh 我正在使用 Oracle。
  • 我会从字符串文字周围的单引号开始。

标签: oracle plsql database-trigger


【解决方案1】:

我想这就是你想要的:

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插入触发器,因为它打算修改正在插入的行。

【讨论】:

    猜你喜欢
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2014-08-14
    • 2014-05-04
    • 2011-03-22
    • 2013-06-03
    相关资源
    最近更新 更多