Como posso passar uma expressão como argumento ao chamar uma função de gatilho?
create trigger my_trigger
after insert on my_table
for each row
execute function trigger_job(
'job_name',
(json_build_object(
'foo', current_setting('foo', true),
'bar', current_setting('bar', true)
))
);
Eu sei como chamar uma função "normal" com uma expressão como argumento, mas não consigo fazê-la funcionar chamando uma função a partir do gatilho. Eu também sei ler os argumentos passados de TG_ARGV[] na função de gatilho, mas isso está além dessa questão.
Eu também tentei algo simples como:
create trigger my_trigger
after insert on my_table
for each row
execute function trigger_job(
'job_name',
(true)
);
Mas ainda recebo o erro:
ERROR: syntax error at or near "("
LINE 6: (true)
^
Atualização: agora estou usando uma função intermediária. O gatilho chama a função intermediária com o parâmetro de texto único. Essa função intermediária constrói o segundo argumento e chama a função final trigger_job
com ambos os argumentos. Simples.
Isso não pode ser feito. Dos documentos :