2017-08-16 3 views
0

J'insère actuellement ces données {"curr": "testcurr","nm": "testnm"} dans une vue.Erreur lors de l'insertion d'un jsonb dans une table à l'aide des fonctions de déclenchement

Une fonction de déclenchement est ensuite exécutée pour être insérée dans les tables d'origine à la place.

Je reçois une erreur column "curr" does not exist de la fonction de déclenchement.

Voici la partie de mon code:

IF (tg_op = 'INSERT') THEN 
       NEW."dat"= jsonb_build_object("curr",NEW."curr","symb",NEW."symb"); 
       NEW."ct"=now(); 
       INSERT INTO data.tbl 
        (
        "nm", 
        "dat", 
        "ct", 
        ) 
        VALUES 
        (
        NEW."nm", 
        NEW."dat" 
        NEW."ct" 
        )returning "id" into NEW.id; 
END 

Comme vous pouvez le voir, la table d'origine ne contient pas la colonne « Curr », mais les données de mon poste ne devrait avoir aucun problème non?

Répondre

1

changement:

jsonb_build_object("curr",NEW."curr","symb",NEW."symb") 

à:

jsonb_build_object('curr',NEW."curr",'symb',NEW."symb") 

https://www.postgresql.org/docs/current/static/functions-json.html regard sur l'exemple - pour obtenir "foo" clé que vous passez chaîne 'foo'

guillemets doubles sont pour les identifiants - colonne, relation noms etc. - vérifier https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

+0

merci, j'ai une autre erreur maintenant: 'ne peut pas insérer dans la colonne" curr "de vue" tblview "' –

+0

apparemment, vous essayez d'insérer une ligne dans une vue, ce qui ne peut être fait par l'origine de la vue. ce serait la question différente et exigera un échantillon de code différent –