PL/SQL - 触发器计数

Posted

技术标签:

【中文标题】PL/SQL - 触发器计数【英文标题】:PL/SQL - Triggers Count 【发布时间】:2018-01-05 11:57:55 【问题描述】:

我有以下表格:

Piers(PierID, Name, NumOfShips)
Ships(ShipID, Name)
Docking(PierID, ShipID)

我需要实现一个触发器,该触发器将计算每个码头包含多少艘船,并将结果插入NumOfShips

【问题讨论】:

到目前为止你得到了什么? 【参考方案1】:

您需要一个AFTER UPDATE 触发器

CREATE OR REPLACE TRIGGER change_on_Ships
AFTER UPDATE ON Ships
BEGIN
   UPDATE Piers 
      SET NumOfShips = (
          SELECT count(1) FROM Docking d
           WHERE d.PierID = ( 
              SELECT PierID FROM Docking where ShipId = :NEW.ShipID 
           )
      )
    WHERE PierID = (select PierID from Docking where ShipID = :NEW.ShipID );
END;

希望对你有帮助

【讨论】:

以上是关于PL/SQL - 触发器计数的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 触发器不会运行

带有动态 sql 的 PL/SQL 触发器

Oracle笔记4-pl/sql-分支/循环/游标/异常/存储/调用/触发器

PL/SQL 触发器 - 触发问题 3

PL/SQL 触发器不显示?

PL/SQL 触发器不工作