2016-12-05 3 views
1

J'espère que quelqu'un peut aider. Actuellement, je travaille avec une base de données PostgreSQL mais je ne sais vraiment pas comment résoudre mon problème. Dans PLSQL il y a des opérations dans un trigger appelé 'INSERTING, UPDATING, DELETING'. Mais quand il s'agit de PostgreSQL je baffered ...Existe-t-il des fonctions dans PostgreSQL comme les fonctions 'UPDATING, DELETING, INSERTING' d'Oracles?

Dans Oracle, je peux le faire:

v_action CHAR(1) := CASE WHEN INSERTING THEN "I" WHEN UPDATING THEN "U" WHEN DELETING THEN "D" END; 
+0

vous cherchez 'TG_OP'? .. –

Répondre

2

https://www.postgresql.org/docs/current/static/plpgsql-trigger.html

TG_OP Data type text; a string of INSERT, UPDATE, DELETE, or TRUNCATE telling for which operation the trigger was fired.

Cela devrait faire l'affaire:

v_action := CASE 
    WHEN TG_OP = 'INSERT' THEN 'I' 
    WHEN TG_OP = 'UPDATE' THEN 'U' 
    WHEN TG_OP = 'DELETE' THEN 'D' 
END; 
+0

Merci, c'est ce que j'ai cherché. Mais quand le déclencheur est déclenché, je reçois l'erreur suivante: 'ERROR: la colonne" INSERT "n'existe pas – mortendegn

+0

A quoi il ressemble dans mon trigger:' v_action CHAR (1): = CASE TG_OP = "INSERT" ALORS "I" QUAND TG_OP = "MISE À JOUR" ALORS "U" QUAND TG_OP = "SUPPRIMER" ALORS "D" FIN; ' – mortendegn

+1

guillemets simples, pas le double. –