Vous n'êtes pas identifié(e).
Pages : 1
Bonjour
Je droppe des triggers si jamais un trigger n'existe pas il sort en erreur,
comment faire meme s'il y a erreur (trigger non trouvé) le traitement continue
merci
/* Ouverture Curseur*/
open c_com;
LOOP
FETCH c_com into l_va_schema,l_va_table;
IF l_va_table IS NOT NULL then
l_va_tmp:='';
l_va_tmp := 'DROP TRIGGER' || ' trg_' || l_va_table || ' ON ' || l_va_schema ||'.' || l_va_table ;
EXECUTE l_va_tmp;
RAISE NOTICE ' l_va_tmp ---> %', l_va_tmp;
END IF;
EXIT WHEN NOT FOUND;
END LOOP;
Hors ligne
j'ai fait ca
LOOP
FETCH c_com into l_va_schema,l_va_table;
IF l_va_table IS NOT NULL then
select count(*) as trigger_existe from information_schema.triggers where trigger_schema != 'pg_catalog'
and trigger_schema = v_name_schema
and trigger_name=' trg_' || l_va_table;
If trigger_existe > 0 Then
l_va_tmp:='';
l_va_tmp := 'DROP TRIGGER' || ' trg_' || l_va_table || ' ON ' || l_va_schema ||'.' || l_va_table ;
EXECUTE l_va_tmp;
RAISE NOTICE ' l_va_tmp ---> %', l_va_tmp;
END IF;
END IF;
EXIT WHEN NOT FOUND;
END LOOP;
mais cela ne marche pas
Hors ligne
Cette instruction n'est pas correcte :
select count(*) as trigger_existe from information_schema.triggers where trigger_schema != 'pg_catalog'
and trigger_schema = v_name_schema
Ça devrait être :
select into trigger_existe count(*) from information_schema.triggers where trigger_schema != 'pg_catalog'
and trigger_schema = v_name_schema
Attention à bien déclarer trigger_existe avant.
Guillaume.
Hors ligne
Par ailleurs c'est une mauvaise habitude de faire un count(*) juste pour prouver l'existence d'au moins un enregistrement, même si dans ce cas, ce n'est pas gênant. Un simple
select into trigger_existe 1 from information_schema.triggers where trigger_schema != 'pg_catalog'
and trigger_schema = v_name_schema LIMIT 1
Si trigger_existe vaut null et pas 1, c'est que l'enregistrement n'existe pas. Dans le cas présent, pas de souci, mais si la requête ramenait des centaines d'enregistrements et était appelée souvent…
Marc.
Hors ligne
Entièrement d'accord.
Guillaume.
Hors ligne
merci
Hors ligne
Pages : 1