我正在尝试创建一个数据库触发器,如果类(输入的记录)要么启动,那么刚刚插入或更新到TUTPRAC表中的记录中的属性(STAFFNO,CLASS_DAY,CLASS_TYPE和ROOMNUM)会更改为NULL上午9点或下午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;
答案 0 :(得分:0)
如果要更新正在插入/更新的记录,可以使用之前的触发器执行此操作:
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;
但是,我认为最好简单地在表格中为表格添加一个约束,因此当您尝试插入或更改为无效时间时会出现错误。