插入后更新记录的 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 次,这样当您尝试插入或更改为无效时间。
我正在尝试创建一个数据库触发器来更改刚刚插入或更新到 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 次,这样当您尝试插入或更改为无效时间。