2010-12-09 32 views
8

Comment créer un trigger uniquement s'il n'existe pas? Lorsque je crée ou remplace, je reçois une erreur de syntaxe, donc je cherche un moyen de tester l'existence d'un déclencheur.postgres trigger creation

Je peux toujours sélectionner * à partir de pg_trigger, mais je suis sûr qu'il existe un moyen plus approprié.

Merci

+1

il est toujours une bonne idée de parler de quelle version de postgres que vous utilisez –

Répondre

16

Postgres peut conditionnellement déposer un déclencheur - voir the docs. Faites ceci avant en créant le déclencheur, alors cela fonctionnera toujours. Comme l'indique Jack dans les commentaires, cette fonctionnalité n'est disponible que depuis la version 8.2; ceci a été dehors pendant plus de quatre années pourtant, ainsi il devrait être disponible dans votre version.

+0

@El Yobo, à noter que cette fonctionnalité a été introduite dans 8.2 –

+0

@Jack - vrai, merci pour pointage ça dehors. –

+0

@El Yobo Il est difficile d'être sûr combien utilisent encore 8.1 - Je pense qu'un facteur clé à considérer est que c'est l'installation par défaut sur RHEL5 et je soupçonne que l'utilisation des moyens est toujours répandue –

0
CREATE TRIGGER (NameOfTrigger) AFTER INSERT OR UPDATE ON (NameOfTable) 

DROP TRIGGER IF EXISTS (NameOfTrigger) ON (NameOfTable);