I want to run a trigger each time a record is inserted or updated on table knowledgebase_messages which will vectorize the message column, using the joined pg_language_dictionary (e.g.: "French") for that message's locale_id.
Currently, the trigger working on row update, but not initial insert. Meaning, if I insert a row, then run a query to get records, updated the row in any way, or refresh the postgres UI, I see the vectorized value correctly there.
Trigger function:
runMessageVectorTriggerFn = 'CREATE OR REPLACE FUNCTION run_message_vector() ' +
'RETURNS TRIGGER ' +
'AS $BODY$ ' +
'BEGIN ' +
'IF pg_trigger_depth() <> 1 THEN ' +
'RETURN NEW; ' +
'END IF; ' +
'UPDATE knowledgebase_messages kbm ' +
'SET vector = to_tsvector(lang.pg_dictionary_name::regconfig, kbm.message) ' +
'FROM locales as loca ' +
'JOIN languages as lang ON loca.language_id = lang.id ' +
'WHERE kbm.locale_id = loca.id;' +
'RETURN NEW; ' +
'END; ' +
'$BODY$ LANGUAGE plpgsql';
Trigger:
runMessageVectorTrigger = 'CREATE TRIGGER run_message_vector AFTER INSERT OR UPDATE ON knowledgebase_messages ' +
'FOR EACH ROW EXECUTE PROCEDURE run_message_vector()';