Esempio: Cancellare dati con primary key


La seguente procedura cancella da una tabella alcuni dati utilizzando la sua chiave primaria.
Se si verifica l'errore foreign key violation error vuol dire che ci sono altre tabelle che hanno delle chiavi esterne che puntano alla tabella da cancellare. In questo caso, in assenza di CASCADE, si devono cancellare tutte le tabelle in relazione con quella di partenza.
CREATE OR REPLACE PROCEDURE schema1.PRC_DELETE_CHIAVE IS
CURSOR cur_idCARTELLA IS
  SELECT ID_CARTELLA
  FROM CARTELLA
  WHERE   SISTEMA_PROVENIENZA in ('LoC','bar')
  AND     COD_STATO 0
  AND     COD_STATO 4
  AND     DT_FINE_MERITO < SYSDATE - 365;
 
BEGIN
    FOR CARTELLA_CUR IN CUR_IDCARTELLA
    LOOP  
              
        DELETE FROM ESITI WHERE ID_CARTELLA = CARTELLA_CUR.ID_CARTELLA;

        DELETE FROM RICHIESTA_BLOB WHERE  ID_RICHIESTA IN (SELECT ID_RICHIESTA FROM richiesta WHERE ID_CARTELLA = CARTELLA_CUR.ID_CARTELLA);  

        DELETE FROM RICHIESTA WHERE ID_CARTELLA = CARTELLA_CUR.ID_CARTELLA;
 
        DELETE  FROM CARTELLA WHERE  ID_CARTELLA = CARTELLA_CUR.ID_CARTELLA;
      
        COMMIT;

        EXIT WHEN CUR_IDCARTELLA%NOTFOUND;

    END LOOP;
 
END;
/

BEGIN
PRC_DELETE_CHIAVE();
END;
/

Post popolari in questo blog

Create e Drop Pluggable Database

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione