PLSQL : Désactiver tous les triggers

Résolu/Fermé
pitimick Messages postés 20 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 2 février 2012 - 24 nov. 2011 à 11:49
pitimick Messages postés 20 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 2 février 2012 - 30 nov. 2011 à 09:57
Bonjour,

je souhaite créer une procédure qui désactive tous les triggers sans que je connaisse le nom des tables et sans avoir à lister les triggers un par un.

J'ai essayé un script du genre

DECLARE
CURSOR selectTrigger IS select table_name FROM USER_TRIGGERS;
Requete VARCHAR2(256);
nomTable VARCHAR2(30);
BEGIN
FOR ligne IN selectTrigger
LOOP
nomTable := ligne.table_name;
Requete := 'alter table ' || nomTable || ' disable all trigger';
EXECUTE IMMEDIATE Requete;
END LOOP;
END;
/

saurez vous me dire pourquoi il ne fonctionne pas? c'est en voyant divers forum que j'ai décidé de taper sur la table USER_TRIGGERS et de faire du sql dynamique avec EXECUTE IMEDIATE


merci d'avance

1 réponse

pitimick Messages postés 20 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 2 février 2012
30 nov. 2011 à 09:57
bon bah voila la correction

create or replace procedure disableAllTriggers
is
begin
FOR i IN (SELECT trigger_name FROM user_triggers) LOOP

EXECUTE IMMEDIATE 'ALTER TRIGGER ' || i.trigger_name || ' DISABLE';

END LOOP;
end;
/
0