Re: Trigger is not working for Inserts from the application

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Kiran <bangalore(dot)kiran(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Trigger is not working for Inserts from the application
Date: 2016-09-10 19:08:36
Message-ID: bce890a3-97ee-0e0e-ce00-c98c9d9c5050@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 09/10/2016 11:39 AM, Kiran wrote:
> Hi Adrian,
>
> Thanks for your response.
> I tried with logging. The application is inserting the record that I am
> passing into the database. But the trigger is not firing.

What is the text of the complete statement as it appears in the logs?

When you do the INSERT the other fields are the same in the database as
in the row, after the INSERT?

Related to second question, is the the INSERT being done in an explicit
transaction eg. BEGIN; INSERT something; and if so is there a COMMIT at
the end?

Have you tried with log_statement = 'all' to see if there are non-mod
statements running at the same time?

> I have been looking into this issue since morning with out any positive
> outcome :(.
> If you have any other tips, it will be really helpful.
>
> regards
> Kiran
>
> On Sat, Sep 10, 2016 at 3:22 PM, Adrian Klaver
> <adrian(dot)klaver(at)aklaver(dot)com <mailto:adrian(dot)klaver(at)aklaver(dot)com>> wrote:
>
> On 09/10/2016 03:59 AM, Kiran wrote:
>
> Hi,
>
> *Problem background :*
> I have a *function in the DB* as follows
> CREATE FUNCTION question_tsv_trigger() RETURNS trigger AS
> $BODY$
> begin
> New.weighted_tsv :=
> to_tsvector('swedish',coalesce(New.body->>'qtext','')::text);
> RAISE NOTICE 'TRIGER called on %', TG_TABLE_NAME;
> return New;
> end
> $BODY$
> LANGUAGE plpgsql VOLATILE
> COST 100;
>
> **Trigger in the DB:**
> CREATE TRIGGER insert_upd_question_tsvector BEFORE INSERT OR UPDATE
> ON myschema.cf_question
> FOR EACH ROW EXECUTE PROCEDURE question_tsv_trigger();
>
> If I insert a record from my application using following code :
> db.myschema.cf_question.insert({
> cf_question_type_id:request.pa <http://request.pa>yload.type_id,
> cf_question_category_id:request.payload.cat_id,
> lang:request.payload.lang,
> body:request.payload.body
> }
>
> The above app code inserts the record in the DB, but the
> respective trigger
> in the database is not triggered hence the "weighted_tsv"
> columns is empty
> for this record.
>
> But if I insert a record from the postgres psql, it will insert and
> the respective trigger is working perfectly.
>
> What could be the problem ? Why trigger is not working if I
> insert from the
> application ? Am I doing anything wrong ?
> Any help would be really really appreciated.
>
>
> If you have not, turn on log_statement:
>
> https://www.postgresql.org/docs/9.5/static/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHAT
> <https://www.postgresql.org/docs/9.5/static/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHAT>
>
> Then check your log to see what the application is sending to the
> database.
>
>
> Thanks
> Kiran
>
>
>
> --
> Adrian Klaver
> adrian(dot)klaver(at)aklaver(dot)com <mailto:adrian(dot)klaver(at)aklaver(dot)com>
>
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2016-09-10 19:26:03 Re: Trigger is not working for Inserts from the application
Previous Message Kiran 2016-09-10 18:48:59 Re: Trigger is not working for Inserts from the application