2013-03-06 3 views
0

J'ai le déclencheur suivant que j'aimerais utiliser dans plusieurs tables. Alors, comment je pourrais le faire fonctionner au lieu d'avoir un déclencheur pour chaque table?Utilisation du nom de table dynamique sur postgresql Trigger

BEGIN 
    IF (TG_OP = 'UPDATE') THEN 
     UPDATE test_table set rel_label = (select SUBSTR(release, 1, 5)) where uid=OLD.uid; 
     RETURN OLD; 
    ELSIF (TG_OP = 'INSERT') THEN 
     UPDATE test_table set rel_label = (select SUBSTR(release, 1, 5)) where uid=OLD.uid; 
     RETURN NEW; 
    END IF; 
    RETURN NULL; -- result ignored since is an AFTER TRIGGER 
END; 

concerne.

+0

Vous voulez changer le 'test_table' nom pour chaque déclencheur? –

+0

L'oposite. je voudrais avoir le déclencheur fonctionnant pour n'importe quelle table sans avoir le spécifier le nom de table. –

Répondre

0

Je viens de trouver une solution directe.

BEGIN 
    IF (TG_OP = 'INSERT') THEN 
       NEW.rel_label = (select SUBSTR(NEW.release, 1, 5)); 
       RETURN NEW; 
    ELSIF (TG_OP = 'UPDATE') THEN 
       NEW.rel_label = (select SUBSTR(NEW.release, 1, 5)); 
       RETURN NEW; 
    END IF; 
      RETURN NULL; 

END; 
+0

C'était ce que ma question visait;) –

0

Voir la documentation sur la commande EXECUTE.