Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-04091:таблица xx_xx се променя, тригерът/функцията може да не я види

Не можете да правите заявки за променяща се таблица в тригера.
Вижте това:https://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm

Вместо това опитайте този код:

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. Има ли начин да принудите Oracle да промени плана на заявка, без да използвате подсказки?

  2. Хеш присъединяване в Oracle с пример

  3. Oracle PL/SQL Създаване на таблици в курсора?

  4. да инсталирате Oracle Instantclient на Mac OS/X без да задавате променливи на средата?

  5. Нуждаете се от помощ за връзка с база данни и код за заявка