Thread: Trigger is not working for Inserts from the application
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
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
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