Visão Geral
O Latromi oferece diversos parâmetros (também conhecidos como ‘marcações’) que podem ser usados nos Comandos SQL das Consultas, Formulários e demais Objetos.
Um desses parâmetros é o nome do usuário autenticado (LoginUsuario), que fica no grupo Sessão
Para usar este parâmetro em um Comando SQL, é muito simples, como pode ser visto abaixo:
SELECT
campo1,
campo2
FROM tabela
WHERE usuario = '{?SESSION LoginUsuario}'
Mas e se fosse necessário usar o nome do usuário em uma Trigger ou função de banco de dados onde não é possível passar parâmetros adicionais? Vamos descobrir a seguir!
Como o Usuário é Passado
Antes de abrir qualquer conexão com o banco de dados PostgreSQL, o Latromi sempre passa para o banco de dados o nome do usuário do sistema como um parâmetro de configuração, usando a função set_config.
O nome do parâmetro é latromi.username
, e pode ser acessado à qualquer momento enquanto durar a conexão.
Obtendo o Nome de Usuário
PostgreSQL ≥ 9.6
Para pegar o nome do usuário autenticado a partir da versão 9.6 do PostgreSQL, basta chamar a função current_setting(setting_name [, missing_ok ])
:
username = current_setting('latromi.username', true);
O parâmetro missing_ok
evitar um erro caso o valor da configuração não estiver disponível. Neste caso, vai retornar null
.
Versões anteriores do PosgreSQL
Na versão 9.5 (ou inferior) do PostgreSQL, a função current_setting
não tem o parâmetro missing_ok
, e dispara o erro a seguir se o valor da configuração não estiver disponível:
ERROR: unrecognized configuration parameter “latromi.username”
Para evitar este erro, basta usar um bloco Begin / Exception
:
BEGIN
username = current_setting('latromi.username');
EXCEPTION WHEN others THEN
username = null;
END