CREATE TABLE
CREATE TABLE define uma nova tabela.
CREATE TABLE [ IF NOT EXISTS ] table_name ( [ { column_name data_type [ column_constraint [ ... ] ] | table_constraint | LIKE source_table [ like_option ... ] } [, ... ] ] ) where column_constraint is: [ CONSTRAINT constraint_name ] { NOT NULL | NULL | CHECK ( expression )| DEFAULT default_expr | GENERATED ALWAYS AS ( generation_expr ) STORED | GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY ( sequence_options ) | UNIQUE [ NULLS [ NOT ] DISTINCT ] index_parameters | PRIMARY KEY index_parameters | and table_constraint is: [ CONSTRAINT constraint_name ] { CHECK ( expression ) | UNIQUE [ NULLS [ NOT ] DISTINCT ] ( column_name [, ... ] ) index_parameters | PRIMARY KEY ( column_name [, ... ] ) index_parameters | and like_option is: { INCLUDING | EXCLUDING } { COMMENTS | CONSTRAINTS | DEFAULTS | GENERATED | IDENTITY | INDEXES | STATISTICS | ALL } index_parameters in UNIQUE, and PRIMARY KEY constraints are: [ INCLUDE ( column_name [, ... ] ) ]
Colunas de identidade
nota
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.
A cláusula GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY ( cria a coluna como uma coluna de identidade. Ela terá uma sequência implícita anexada a ela e, nas linhas recém-inseridas, a coluna terá automaticamente valores da sequência atribuída a ela. Essa coluna é implicitamente sequence_options )NOT NULL.
As cláusulas ALWAYS e BY DEFAULT 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.
Em um comando UPDATE, se ALWAYS estiver selecionado, qualquer atualização da coluna para qualquer valor diferente de DEFAULT será rejeitada. Se BY
DEFAULT estiver selecionado, a coluna poderá ser atualizada normalmente. (Não há nenhuma cláusula OVERRIDING para o comando UPDATE.)
A cláusula sequence_options pode ser usada para substituir os parâmetros da sequência. As opções disponíveis incluem aquelas mostradas para CREATE SEQUENCE, mais SEQUENCE NAME
. Sem nameSEQUENCE NAME, o sistema escolherá um nome não utilizado para a sequência.