获取 Oracle 更新触发器中更新记录的 ID pl/sql

Get ID of updated record in Oracle update trigger pl/sql

我有一名员工 table 并试图将员工 table 的 update/delete 操作记录到日志 table 中。 Emp table:

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,那么我会收到多行提取错误,我相信这是真的。如何找回身份证?请帮我理一下逻辑

您已经在 :NEW 伪行中有了值,其中包含更新发生后存在的值。看起来你想做类似的事情:

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;

祝你好运。