Thread: Trigger is not working for Inserts from the application

Trigger is not working for Inserts from the application

From
Kiran
Date:
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.payload.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 another record from the postgre's 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.

Thanks
Kiran

Re: Trigger is not working for Inserts from the application

From
Jim Nasby
Date:
On 9/10/16 6:03 AM, Kiran wrote:
> If I insert a record from my application using following code :
> db.myschema.cf_question.insert({
> cf_question_type_id:request.payload.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 another record from the postgre's 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.

Without knowing what that app code is doing it's impossible to know. Try
turning on logging of all statements (log_statement = ALL) and see what
queries the app is actually running.
--
Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX
Experts in Analytics, Data Architecture and PostgreSQL
Data in Trouble? Get it in Treble! http://BlueTreble.com
855-TREBLE2 (855-873-2532)   mobile: 512-569-9461


Re: Trigger is not working for Inserts from the application

From
Kiran
Date:
Hi Jim,

The issue is now resolved thanks to Tom and Adrian.

regards
Kiran

On Sun, Sep 11, 2016 at 4:16 AM, Jim Nasby <Jim.Nasby@bluetreble.com> wrote:
On 9/10/16 6:03 AM, Kiran wrote:
If I insert a record from my application using following code :
db.myschema.cf_question.insert({
cf_question_type_id:request.payload.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 another record from the postgre's 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.

Without knowing what that app code is doing it's impossible to know. Try turning on logging of all statements (log_statement = ALL) and see what queries the app is actually running.
--
Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX
Experts in Analytics, Data Architecture and PostgreSQL
Data in Trouble? Get it in Treble! http://BlueTreble.com
855-TREBLE2 (855-873-2532)   mobile: 512-569-9461