View a markdown version of this page

Colunas de identidade - Amazon Aurora DSQL

Colunas de identidade

Importante

Ao usar colunas de identidade, é necessário considerar cuidadosamente o valor do cache. Para ter mais informações, consulte o texto explicativo “Importante” na página CREATE SEQUENCE.

Para obter orientações sobre a melhor forma de usar colunas de identidade com base nos padrões de workload, consulte Trabalhar com sequências e colunas de identidade.

Uma coluna de identidade é uma coluna especial gerada automaticamente com base em uma sequência implícita. Ela pode ser usado para gerar valores de chave. Para criar uma coluna de identidade, use a cláusula GENERATED ... AS IDENTITY emCREATE TABLE. Por exemplo:

CREATE TABLE people ( id bigint GENERATED ALWAYS AS IDENTITY (CACHE 70000), ... );

ou alternativamente:

CREATE TABLE people ( id bigint GENERATED BY DEFAULT AS IDENTITY (CACHE 70000), ... );

Consulte CREATE TABLE para obter mais detalhes.

Se um comando INSERT for executado na tabela com a coluna de identidade e nenhum valor for especificado explicitamente para a coluna de identidade, será inserido um valor gerado pela sequência implícita. Por exemplo, com as definições anteriores e presumindo colunas adicionais apropriadas, escrever:

INSERT INTO people (name, address) VALUES ('A', 'foo'); INSERT INTO people (name, address) VALUES ('B', 'bar');

geraria valores para a coluna id a partir de 1 e os seguintes dados da tabela:

id | name | address ----+------+--------- 1 | A | foo 2 | B | bar

Também é possível especificar a palavra-chave DEFAULT, em vez de um valor, para solicitar explicitamente o valor gerado pela sequência:

INSERT INTO people (id, name, address) VALUES (DEFAULT, 'C', 'baz');

Da mesma forma, a palavra-chave DEFAULT pode ser usada em comandos UPDATE.

Portanto, sob vários aspectos, uma coluna de identidade se comporta como uma coluna com um valor padrão.

As cláusulas ALWAYS e BY DEFAULT na definição da coluna determinam como os valores especificados pelo usuário são tratados explicitamente nos comandos INSERT e UPDATE. Em um comando INSERT, se ALWAYS estiver selecionado, um valor especificado pelo usuário só será aceito se a instrução INSERT especificarOVERRIDING SYSTEM VALUE. Se BY DEFAULT estiver selecionado, o valor especificado pelo usuário terá precedência. Portanto, o uso de BY DEFAULT gera um comportamento mais semelhante aos valores padrão, em que o valor padrão pode ser substituído por um valor explícito, enquanto ALWAYS oferece um pouco mais de proteção contra a inserção acidental de um valor explícito.

O tipo de dados de uma coluna de identidade deve ser um dos tipos de dados aceitos pelas sequências. (Consulte CREATE SEQUENCE.) As propriedades da sequência associada podem ser especificadas ao criar uma coluna de identidade (consulte CREATE TABLE) ou alteradas posteriormente (consulte ALTER TABLE).

Uma coluna de identidade é marcada automaticamente como NOT NULL. No entanto, uma coluna de identidade não garante exclusividade. (Uma sequência normalmente exibe valores exclusivos, mas ela pode ser redefinida ou os valores podem ser inseridos manualmente na coluna de identidade, conforme discutido anteriormente.) A exclusividade precisaria ser aplicada usando uma restrição PRIMARY KEY ou UNIQUE.