SET

Nome

SET -- muda um parâmetro de tempo de execução

Sinopse

SET [ SESSION | LOCAL ] nome { TO | = } { valor | 'valor' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { zona_horária | LOCAL | DEFAULT }

Descrição

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.

Parâmetros

SESSION
Especifica que o comando tem efeito para a sessão corrente (Este é o padrão se nem SESSION nem LOCAL estiverem presentes).
LOCAL
Especifica que o comando tem efeito apenas para a transação corrente. Após o COMMIT ou o ROLLBACK a definição no nível de sessão volta a ter efeito novamente. Deve ser observado que o comando SET LOCAL parece não produzir nenhum efeito quando executado fora de um bloco BEGIN, uma vez que a transação termina imediatamente.
nome
Nome de um parâmetro de tempo de execução cujo valor pode ser definido. Os parâmetros disponíveis estão documentados na Seção 16.4 e abaixo.
valor
O novo valor do parâmetro. Os valores podem ser especificados como constantes cadeias de caracteres, identificadores, números, ou listas separadas por vírgula dos mesmos. Pode ser utilizado DEFAULT para especificar a redefinição do parâmetro com o seu valor padrão.

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:

NAMES
SET NAMES valor é um outro nome para SET client_encoding TO valor.
SEED
Define a semente interna para o gerador de números randômicos (a função 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);
TIME ZONE
SET TIME ZONE valor é um outro nome para SET timezone TO valor. A sintaxe SET TIME ZONE permite uma sintaxe especial para especificar a zona horária. Abaixo estão alguns exemplos de valores válidos (mas deve ser observado que alguns são aceitos apenas em algumas plataformas):
'PST8PDT'
A zona horária de Berkeley, Califórnia.
'Portugal'
A zona horária de Portugal.
'Europe/Rome'
A zona horária da Itália.
-7
A zona horária 7 horas a oeste da UTC (equivalente a PDT - Pacific Daylight Time). Os valores positivos estão a leste [1] da UTC.
INTERVAL '-08:00' HOUR TO MINUTE
A zona horária 8 horas a oeste da UTC (o mesmo que PST - Pacific Standard Time = UTC - 8 horas).
LOCAL
DEFAULT
Define a zona horária como a zona horária local (a zona horária padrão do sistema operacional do servidor).

Veja a Seção 8.5 para obter mais informações sobre zonas horárias.

Observações

A função set_config fornece uma funcionalidade equivalente. Veja a Seção 9.13 .

Exemplos

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

Compatibilidade

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.

Veja também

RESET , SHOW

Notas

[1]

Leste = oriente, o lado do Sol nascente; Oeste = ocidente, o lado do Sol poente. (N. do T.)

SourceForge.net Logo