Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

ORA-04091:bảng xx_xx đang đột biến, trình kích hoạt / chức năng có thể không nhìn thấy nó

Bạn không thể truy vấn bảng thay đổi trong trình kích hoạt.
Xem phần này:https://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm

Hãy thử mã này thay thế:

create or replace 
TRIGGER log_changes 
  AFTER INSERT OR UPDATE OR DELETE
  ON passengerlist1
  FOR EACH ROW

DECLARE
 t_name varchar2(255);
 t_surname varchar2(255);
BEGIN
   IF DELETING THEN
    SELECT PERSON1.GIVENNAME, PERSON1.FAMILYNAME INTO T_NAME,  T_SURNAME
    FROM PERSON1
    WHERE PERSON1.PERSONID = :OLD.PERSONID;

    INSERT INTO LOGS VALUES (T_NAME, T_SURNAME, :OLD.FLIGHTID, SYSDATE);
   END IF;

   IF UPDATING OR INSERTING THEN

     SELECT PERSON1.GIVENNAME,  PERSON1.FAMILYNAME  INTO T_NAME, T_SURNAME 
     FROM PERSON1 
     WHERE PERSON1.PERSONID = :NEW.PERSONID;

     INSERT INTO LOGS VALUES (T_NAME, T_SURNAME, :NEW.FLIGHTID, SYSDATE);
   END IF;
END;
/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối PDO với cơ sở dữ liệu Oracle

  2. NUMTODSINTERVAL trong PostgreSQL

  3. chuyển đổi giá trị được phân tách bằng dấu phẩy thành nhiều hàng

  4. Làm thế nào để chuyển đổi XML sang Đối tượng OCI-Lob?

  5. ORA-30926 - Trạng thái hợp nhất