SET

Name

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

Synopsis

SET variável { TO | = } { valor | 'valor' | DEFAULT }
SET TIME ZONE { 'zona_horária' | LOCAL | DEFAULT }
  

Entradas

variável

Um parâmetro de tempo de execução cujo valor pode ser mudado.

valor

O novo valor do parâmetro. Pode ser usado DEFAULT para especificar a atribuição do valor padrão do parâmetro. São permitidas listas de cadeias de caracteres, mas construções mais complexas podem precisar estar entre apóstrofos (') ou entre aspas (").

Descrição

O comando SET altera os parâmetros de configuração de tempo de execução. Os seguintes parâmetros podem ser alterados:

CLIENT_ENCODING
NAMES

Define a codificação multibyte do cliente. A codificação especificada deve ser suportada pelo servidor.

Esta opção somente está disponível quando o PostgreSQL for gerado com suporte para multibyte.

DATESTYLE

Escolhe o estilo de representação da data/hora. Duas atribuições separadas são feitas: o padrão de saída para data/hora, e a interpretação da entrada ambígua.

Estes são os estilos de saída para data/hora:

ISO

Usa o estilo ISO 8601 para data e hora (YYYY-MM-DD HH:MM:SS). Este é o padrão.

SQL

Usa o estilo Oracle/Ingres para data e hora. Observe que este estilo não tem relação com o SQL (que define o estilo ISO 8601). O nome desta opção é apenas um acidente histórico.

PostgreSQL

Usa o formato tradicional do PostgreSQL.

German

Usa dd.mm.yyyy para representar as datas numéricas.

As duas opções a seguir determinam o subestilo dos formatos de saída "SQL" e "PostgreSQL", e a interpretação preferencial da entrada de data ambígua.

European

Usa dd/mm/yyyy para representar as datas numéricas.

NonEuropean
US

Usa mm/dd/yyyy para representar as datas numéricas.

O valor para SET DATESTYLE pode ser um da primeira relação (estilos de saída), ou um da segunda relação (subestilos), ou um de cada separados por vírgula.

A inicialização do formato da data pode ser feita por:

Atribuição da variável de ambiente PGDATESTYLE. Se PGDATESTYLE estiver definida no ambiente do cliente baseado na libpq, automaticamente a libpq atribui a DATESTYLE o valor de PGDATESTYLE durante a inicialização da conexão.
Executar o postmaster utilizando a opção -o -e para atribuir às datas a convenção European.

A opção DateStyle é prevista apenas para portar aplicativos. Para formatar os valores de data/hora conforme a necessidade, deve-se usar a família de funções to_char.

SEED

Define a semente interna para o gerador de números randômicos.

valor

O valor da semente a ser usada pela 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. Este produto irá estourar a capacidade sem dar mensagem de erro se um número fora deste intervalo for usado.

A semente também pode ser definida através da função setseed do SQL:

SELECT setseed(valor);
	    

SERVER_ENCODING

Define a codificação multibyte do servidor.

Esta opção somente está disponível quando o PostgreSQL for gerado com suporte para multibyte.

TIME ZONE
TIMEZONE

Define a zona horária padrão para a sessão. Os argumentos podem ser uma constante SQL de intervalo de tempo, uma constante inteira ou de precisão dupla, ou uma cadeia de caracteres representando uma zona horária suportada pelo sistema operacional hospedeiro.

Os valores possíveis para a zona horária dependem do sistema operacional. Por exemplo, no Linux o arquivo /usr/share/zoneinfo contém um banco de dados de zona horária.

Abaixo estão mostrados alguns valores válidos para a zona horária:

'PST8PDT'

Zona horária para a Califórnia.

'Portugal'

Zona horária para Portugal.

'Europe/Rome'

Zona horária para a Itália.

7

Zona horária com 7 horas de deslocamento à oeste do GMT (equivalente à PDT).

INTERVAL '08:00' HOUR TO MINUTE

Zona horária com 8 horas de deslocamento à oeste do GMT (equivalente à PST).

LOCAL
DEFAULT

Define como sendo a zona horária local (a zona horária do sistema operacional).

Se uma zona horária inválida for especificada, a zona horária torna-se GMT (na maioria dos sistemas).

Se a variável de ambiente PGTZ tiver valor atribuído numa estação do cliente baseada na libpq, automaticamente a libpq atribui à TIMEZONE o valor de PGTZ durante a inicialização da conexão.

Uma relação mais extensa dos parâmetros de tempo de execução pode ser encontrada no Guia do Administrador.

Use o comando SHOW para ver os valores correntes estabelecidos para os parâmetros.

Diagnósticos

SET VARIABLE

Mensagem retornada se o comando for executado com sucesso.

ERROR: not a valid option name: nome

O parâmetro que se tentou definir não existe.

ERROR: permission denied

É necessário ser um superusuário para ter acesso a certas definições.

ERROR: nome can only be set at start-up

Certos parâmetros não podem ser mudados após o servidor ter sido inicializado.

Exemplos

Definir o estilo de data tradicional do PostgreSQL com convenções européias:

SET DATESTYLE TO PostgreSQL,European;

Definir a zona horária de Berkeley, Califórnia, usando aspas para preservar os atributos maiúsculos do especificador de zona horária (note que aqui o formato da data/hora é ISO):

 
SET TIME ZONE "PST8PDT";
SELECT CURRENT_TIMESTAMP AS hoje;
   
         hoje
------------------------
 1998-03-31 07:41:21-08

Definir a zona horária para a Itália (observe que é necessário o uso de apóstrofos ou de aspas para tratar caracteres especiais):

 
SET TIME ZONE 'Europe/Rome';
SELECT CURRENT_TIMESTAMP AS hoje;
   
         hoje
------------------------
 1998-03-31 17:41:31+02

Compatibilidade

SQL92

A segunda sintaxe mostrada acima (SET TIME ZONE) tenta imitar o SQL92. Entretanto, o SQL permite somente deslocamentos numéricos para a zona horária. Todos os outros parâmetros mostrados, assim como a primeira sintaxe mostrada acima, são extensões do PostgreSQL.