SET [ SESSION | LOCAL ] parâmetro_de_configuração { 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 dinamicamente 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. [1] [2]
Se for submetido um comando SET, ou SET SESSION, dentro de uma transação interrompida posteriormente, os efeitos produzidos pelo comando SET desaparecerão quando a transação for desfeita (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 onde o comando se encontra for efetivada, os efeitos produzidos persistirão 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 final da transação corrente, seja esta efetivada ou não. Se o comando SET for seguido pelo comando SET LOCAL dentro da mesma transação ocorrerá um caso especial: o valor do comando SET LOCAL será visto até o final da transação, mas depois (se a transação for efetivada) passará a valer o valor do comando SET.
Especifica que o comando vale para a sessão corrente (Este é o padrão se nem SESSION nem LOCAL estiverem presentes).
Especifica que o comando valerá apenas para a transação corrente. Após o COMMIT ou o ROLLBACK a definição no nível de sessão voltará a valer novamente. Deve ser observado que se for executado fora de um bloco BEGIN, vai parecer que o comando SET LOCAL não produz nenhum efeito, uma vez que a transação termina imediatamente.
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.
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:
SET NAMES valor é um outro nome para SET client_encoding TO valor.
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);
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. [3] Abaixo estão alguns exemplos de valores válidos:
A zona horária de Berkeley, Califórnia.
A zona horária da Itália.
A zona horária 7 horas a oeste da UTC (equivalente a PDT - Pacific Daylight Time). Os valores positivos estão a leste [4] da UTC.
A zona horária 8 horas a oeste da UTC (equivalente a PST - Pacific Standard Time = UTC - 8 horas).
Define a zona horária como a zona horária local (a zona horária padrão do sistema operacional do servidor).
Para obter informações adicionais sobre zonas horárias deve ser consultada a Seção 8.5. Além disso, o Apêndice B possui uma lista de nomes reconhecidos de 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, California:
SET TIME ZONE 'PST8PDT';
Definir a zona horária da Itália:
SET TIME ZONE 'Europe/Rome';
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 comando SET são extensões do PostgreSQL.
[1] |
Oracle — O comando ALTER SESSION é utilizado para definir ou modificar qualquer uma das condições ou parâmetros que afetam a conexão com o banco de dados. O comando fica valendo até ser feita a desconexão com o banco de dados. Quando é definido um parâmetro de inicialização através do comando ALTER SESSION, o valor definido permanece apenas pela duração da sessão corrente. Diversos parâmetros que podem ser definidos utilizando o comando ALTER SESSION não são parâmetros de inicialização, ou seja, podem ser definidos pelo comando ALTER SESSION, mas não no arquivo de parâmetros de inicialização. Oracle® Database SQL Reference 10g Release 1 (10.1) Part Number B10759-01 (N. do T.) |
[2] |
SQL Server — A linguagem de programação Transact-SQL fornece vários comandos SET que mudam o tratamento pela sessão corrente de uma informação específica. SQL Server 2005 Books Online — SET (Transact-SQL) (N. do T.) |
[3] |
Oracle — A cláusula set_time_zone_clause possui a mesma semântica nos comandos CREATE DATABASE e ALTER DATABASE. Quando utilizada no comando ALTER DATABASE, esta cláusula redefine a zona horária do banco de dados. Para retornar a zona horária do banco de dados, deve ser consultada a função nativa DBTIMEZONE. Após definir ou mudar a zona horária com esta cláusula, o banco de dados deverá ser reinicializado para a nova zona horária passar a valer. Oracle® Database SQL Reference 10g Release 1 (10.1) Part Number B10759-01 (N. do T.) |
[4] |
Leste = direção, na esfera celeste, onde nascem os astros, à direita de quem olha para o norte; levante, nascente, oriente, este [símb.: E] Oeste = direção, na esfera celeste, onde se põem os astros, à esquerda de quem olha para o norte; poente, ocidente [símb.: W (do ing. west)] — Dicionário Eletrônico Houaiss da língua portuguesa 1.0 (N. do T.) |