我有一个雇员表,并尝试将雇员表的更新/删除操作记录到日志表中。 Emp表:
ID NAME ReviewerID
1 A 101
2 B 102
3 C 101
如果我执行更新操作,那么我想检索该特定记录的ID
DECLARE
P_ID INTEGER:
....
WHEN UPDATING('ReviewerID') THEN
SELECT ID INTO P_ID
FROM EMP
WHERE ReviewerID = :new.ReviewerID
.....
如果我将B的ReviewerID更新为101,那么我会得到一个多行读取的错误,我相信这是事实。如何获取ID?请按逻辑帮助我
答案 0 :(得分:0)
您已经在:NEW伪行中包含值,其中包含UPDATE发生后出现的值。看来您想执行以下操作:
CREATE OR REPLACE TRIGGER EMPLOYEE_UPDATE_TRIGGER
AFTER UPDATE OF EMPLOYEE
FOR EACH ROW
BEGIN
IF :OLD.ReviewerID <> :NEW.ReviewerID THEN
INSERT INTO EMPLOYEE_LOG
(ID, ReviewerID)
VALUES
(:NEW.ID, :NEW.ReviewerID);
END IF;
END EMPLOYEE_UPDATE_TRIGGER;
好运。