0

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

我希望此触发器影响的表称为:

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;
4

1 回答 1

0

当您想更新正在插入/更新的记录时,您可以使用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;

但是,我认为最好为班级时间简单地添加一个约束到表中,因此当您尝试插入或更改为无效时间时会出现错误。

于 2015-10-24T14:10:03.423 回答