Bonjour,
j'ai créé un script de purge mensuel qui est le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
CREATE OR REPLACE PROCEDURE PURGE
IS
	cnt_transfert_actif PLS_INTEGER;
	mois_courant USER_TAB_PARTITIONS.partition_position%TYPE;
 
	CURSOR partition_cur (mois_courant USER_TAB_PARTITIONS.partition_position%TYPE) IS
		SELECT DISTINCT partition_name, partition_position
		FROM USER_TAB_PARTITIONS
		WHERE partition_position != mois_courant
		ORDER BY partition_position;
 
BEGIN
 
	SELECT TO_NUMBER (TO_CHAR (SYSDATE, 'MM'))
		INTO mois_courant
	FROM DUAL;
 
	FOR partition_rec IN partition_cur (mois_courant)
	LOOP
		DBMS_OUTPUT.put_line ('La purge du mois de ' || partition_rec.partition_name || ' a commence');						
		EXECUTE IMMEDIATE 'ALTER TABLE INSTANCE_PAR_TRANSFERT TRUNCATE PARTITION ' || partition_rec.partition_name || ' REUSE STORAGE';
		EXECUTE IMMEDIATE 'ALTER TABLE TACHE_ELEMENTAIRE TRUNCATE PARTITION ' || partition_rec.partition_name || ' REUSE STORAGE';
		EXECUTE IMMEDIATE 'ALTER TABLE ETAT_PAR_TRANSFERT TRUNCATE PARTITION ' || partition_rec.partition_name || ' REUSE STORAGE';
		EXECUTE IMMEDIATE 'ALTER TABLE TRANSFERT TRUNCATE PARTITION ' || partition_rec.partition_name || ' REUSE STORAGE';
		DBMS_OUTPUT.put_line ('La purge du mois de ' || partition_rec.partition_name || ' termine');
		COMMIT;
	END LOOP;
END PURGE;
/
Lorsque je le lance, j'obtiens ça comme erreur :

begin
purge;
end;
ORA-02266: Les clés primaires/uniques de la table référencées par des clés étrangères
ORA-06512: à "SEB.PURGE", ligne 24
ORA-06512: à ligne 2
Une clef primaire est référencé dans d'autres tables. Je ne vois pas trop
comment faire pour m'en sortir. Je travaille sous Toad & Oracle 9i