SET [ SESSION | LOCAL ] nome { TO | = } { valor | 'valor' | DEFAULT } SET [ SESSION | LOCAL ] TIME ZONE { zona_horária | LOCAL | DEFAULT }
O comando SET muda os parâmetros de configuração de tempo de execução. Muitos parâmetros de tempo de execução listados na Seção 16.4 podem ser mudados em tempo de execução pelo comando SET (Mas alguns requerem privilégio de superusuário para serem mudados, e outros não podem ser mudados após o servidor ou a sessão iniciar). O comando SET afeta apenas os valores utilizados na sessão corrente.
Se o comando SET, ou SET SESSION, for executado dentro de uma transação interrompida posteriormente, os efeitos produzidos pelo comando SET desaparecem quando a transação é cancelada (Este comportamento representa uma mudança em relação às versões do PostgreSQL anteriores a 7.3, onde os efeitos produzidos pelo comando SET não eram desfeitos após um erro posterior). Se a transação que envolve o comando for efetivada, os efeitos produzidos persistem até o fim da sessão, a não ser que seja mudado por outro comando SET.
Os efeitos produzidos pelo comando SET LOCAL duram apenas até o fim da transação corrente, seja esta efetivada ou não. Um caso especial ocorre quando o comando SET é seguido por um comando SET LOCAL dentro da mesma transação: o valor do comando SET LOCAL tem efeito até o final da transação, mas depois (se a transação for efetivada) passa a ter efeito o valor do comando SET.
Além dos parâmetros de configuração documentados na Seção 16.4 , existem uns poucos que somente podem ser ajustados usando o comando SET, ou que possuem uma sintaxe especial:
random
). Os valores permitidos são números de ponto flutuante entre 0 e 1, os quais são então multiplicados por 231-1.
A semente também pode ser definida chamando a função setseed
:
SELECT setseed(valor);
Veja a Seção 8.5 para obter mais informações sobre zonas horárias.
Definir o caminho de procura de esquema:
SET search_path TO meu_esquema, public;
Definir o estilo da data igual ao estilo tradicional do POSTGRES, com a convenção de entrada "dia antes do mês":
SET datestyle TO postgres, dmy;
Definir a zona horária de Berkeley, Califórnia, usando apóstrofos para preservar as letras maiúsculas do nome da zona horária.
=> SET TIME ZONE 'PST8PDT'; => SELECT current_timestamp AS agora; agora ------------------------------- 2003-04-29 15:02:01.218622-07
SET TIME ZONE estende a sintaxe definida no padrão SQL. O padrão permite somente deslocamentos de zona horária numéricos, enquanto o PostgreSQL permite uma especificação de zona horária mais flexível. Todas as outras funcionalidades do SET são extensões do PostgreSQL.
[1] |
Leste = oriente, o lado do Sol nascente; Oeste = ocidente, o lado do Sol poente. (N. do T.) |