我在这里缺少什么?它标记了第5行第19列......分号必须保留。
CREATE OR REPLACE TRIGGER Patient_Audit_Trigger
BEFORE DELETE OR UPDATE ON Patient
FOR EACH ROW
DECLARE
Operation VARCHAR(6);
BEGIN
IF DELETING THEN
Operation := 'D';
END IF;
IF UPDATING THEN
Operation := 'U';
END IF;
INSERT INTO Patient_Audit (patNo, patName, patAddr, patDOB, changeTime, changeBy, ActionType)
VALUES (:old.patNo, :old.patName, :old.patAddr, :old.patDOB, CURRENT_TIMESTAMP WITH TIME ZONE, USER, Operation);
END;
/
答案 0 :(得分:2)
我试图编译你的触发器(首先我创建了Patient和Patient_Audit表),而且它无法编译的唯一原因是
CURRENT_TIMESTAMP WITH TIME ZONE
应该是
CURRENT_TIMESTAMP
CURRENT_TIME标记已经有时区,与LOCALTIMESTAMP
不同这个编译
CREATE OR REPLACE TRIGGER Patient_Audit_Trigger
BEFORE DELETE OR UPDATE ON Patient
FOR EACH ROW
DECLARE
Operation VARCHAR(6);
BEGIN
IF DELETING THEN
Operation := 'D';
END IF;
IF UPDATING THEN
Operation := 'U';
END IF;
INSERT INTO Patient_Audit (patNo, patName, patAddr, patDOB, changeTime, changeBy, ActionType)
VALUES (:old.patNo, :old.patName, :old.patAddr, :old.patDOB, current_timestamp, USER, Operation);
END;
/
(偏离主题:请注意,不鼓励使用VARCHAR,您应该使用VARCHAR2)