Quero que o código seja capaz de atualizar automaticamente o carimbo de data / hora quando uma nova linha é inserida, como posso fazer no MySQL usando CURRENT_TIMESTAMP.
Como vou conseguir isso no PostgreSQL?
CREATE TABLE users (
id serial not null,
firstname varchar(100),
middlename varchar(100),
lastname varchar(100),
email varchar(200),
timestamp timestamp
)
database
postgresql
timestamp
Aaron
fonte
fonte
timestamp
é definido pela especificação SQL como uma abreviação deTIMESTAMP WITHOUT TIME ZONE
. Isso quase certamente não é o que você deseja, como explicado pelo especialista em postgres, David E. Wheeler . O outro tipoTIMESTAMP WITH TIME ZONE
é provavelmente o que você deseja, usando as informações de deslocamento de fuso horário passadas para ajustar a data e hora para UTC (mas não armazenando as informações do fuso horário, apesar do nome do tipo).Respostas:
Para preencher a coluna durante a inserção, use um
DEFAULT
valor:Observe que o valor dessa coluna pode ser sobrescrito explicitamente, fornecendo um valor na
INSERT
instrução Se você deseja impedir que você precise de um gatilho .Você também precisará de um gatilho se precisar atualizar essa coluna sempre que a linha for atualizada (conforme mencionado por EJ Brennan )
Observe que o uso de palavras reservadas para nomes de colunas geralmente não é uma boa ideia. Você deve encontrar um nome diferente de
timestamp
fonte
timestamp
transformartimestamp_
. Melhor ainda seria um nome mais descritivo comorow_created_
.Você precisará escrever um gatilho de inserção e, possivelmente, um gatilho de atualização, se desejar que ele mude quando o registro for alterado. Este artigo explica muito bem:
http://www.revsys.com/blog/2006/aug/04/automatically-updating-a-timestamp-column-in-postgresql/
fonte
Atualizando carimbo de data e hora, apenas se os valores forem alterados
Com base no link do EJ e adicione uma declaração if neste link ( https://stackoverflow.com/a/3084254/1526023 )
fonte
Usar 'now ()' como valor padrão gera automaticamente registro de data e hora.
fonte