Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-04091:tabela xx_xx mutuje, wyzwalacz/funkcja może jej nie widzieć

Nie możesz wysłać zapytania do tabeli mutacji w wyzwalaczu.
Zobacz to:https://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm

Zamiast tego wypróbuj ten kod:

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. Dodawanie typów plików, które mają być rozpoznawane przez Files.probeContentType(new File(.ttf).toPath());

  2. Polecenie SQL nie zostało poprawnie zakończone?

  3. Zapytanie dotyczące procedury składowanej Oracle, takie jak brak pracy z kursorem

  4. Co to jest aktualny widok zrzutów APPL_TOP

  5. Java ResultSet.getString() dla pola Data wyświetlającego 00:00:00.0