【问题标题】:What's the proper syntax for an Oracle trigger to update a different table?Oracle 触发器更新不同表的正确语法是什么?
【发布时间】:2012-02-22 01:47:21
【问题描述】:

架构:ASSIGNMENT(票号、技术 pplSoft、分配日期、状态) 其中 status 字段是一个枚举,可以是:assigned、in progress、delegate、close success 或 close unsuccessful

1) 编写一个名为 ClosedTicket 的触发器,每当状态属性 分配表的值更改为“关闭成功”或“关闭不成功”, 它将 TICKETS 表的关闭日期属性的值设置为当前 日期。

我是这样开始的吗?并在 where 子句中使用 status = '已关闭成功' OR status = '已关闭不成功' ?

创建或替换触发器 ClosedTicket 更新后

【问题讨论】:

    标签: sql database oracle database-design


    【解决方案1】:

    这样的东西应该可以工作(虽然我猜TICKETS 中的主键列的名称是什么)。

    CREATE OR REPLACE TRIGGER ClosedTicket
      AFTER UPDATE ON assignment
      FOR EACH ROW
    BEGIN
      IF( :new.status IN ('closed successful', 'closed unsuccessful' ) )
      THEN
        UPDATE tickets t
           SET date_closed = sysdate
         WHERE t.ticket_id = :new.ticket;
      END IF;
    END;
    

    【讨论】:

      猜你喜欢
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 2011-12-22
      • 2016-12-03
      • 1970-01-01
      相关资源
      最近更新 更多