0

TUTPRAC テーブルに挿入または更新されたばかりのレコードの属性 (STAFFNO、CLASS_DAY、CLASS_TYPE、および ROOMNUM) を、クラス (入力されたレコード) が午前 9 時より前または後に開始された場合に 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 に答える