插入后更新记录的 PLSQL 触发器

PLSQL trigger to update a record after insert

我正在尝试创建一个数据库触发器来更改刚刚插入或更新到 TUTPRAC [=22] 的记录中的属性(STAFFNO、CLASS_DAY、CLASS_TYPE 和 ROOMNUM) =] 如果 class(输入的记录)在上午 9 点之前或下午 6 点之后开始,则为 NULL。

我想让这个触发器影响的 Table 叫做:

TUTPRAC:CLASSID (PK)、UNITCODE、STAFFNO、CLASSDAY、CLASSTIME、CLASSTYPE、ROOMNUM

我不确定我是否在正确的轨道上,到目前为止我的代码:

 CREATE TRIGGER CheckBeforeAfterHours
AFTER INSERT OR UPDATE OF CLASS_TIME ON TUTPRAC
FOR EACH ROW
BEGIN
  IF (:NEW.CLASS_TIME < 9:00 AND > 18:00) THEN
    UPDATE TUTPRAC SET STAFFNO = NULL, CLASS_DAY = NULL, CLASS_TYPE = NULL, ROOMNUM = NULL WHERE CLASS_TIME < 9:00 AND > 18:00;
  END IF;
END CheckBeforeAfterHours;

当您想更新 inserted/updated 的记录时,您可以使用 before 触发器:

CREATE TRIGGER CheckBeforeAfterHours
BEFORE INSERT OR UPDATE OF CLASS_TIME ON TUTPRAC
FOR EACH ROW
BEGIN
  IF (:NEW.CLASS_TIME < '09:00' AND > '18:00') THEN
     :NEW.STAFFNO := NULL;
     :NEW.CLASS_DAY := NULL;
     :NEW.CLASS_TYPE := NULL;
     :NEW.ROOMNUM := NULL;
  END IF;
END CheckBeforeAfterHours;

但是,我认为最好只在 table 中添加约束 class 次,这样当您尝试插入或更改为无效时间。