CONSTRAINT cláusula
Aplica-se a: Databricks SQL Databricks Runtime
Adiciona uma chave primária informativa ou uma chave estrangeira informativa como parte de uma instrução CREATE TABLE ou CREATE MATERIALIZED VIEW.
Para adicionar um constraint de verificação a um Delta Lake table use ALTER TABLE após a criação do table.
Sintaxe
Use a cláusula table_constraint
para definir restrições que abrangem vários columns ou para separar a sintaxe da definição de column.
table_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY ( foreign_key_column [, ...] )
REFERENCES parent_table [ ( parent_column [, ...] ) ]
[ foreign_key_option | constraint_option ] [...]
}
}
}
Use a cláusula column_constraint
para definir restrições específicas para uma única definição de column.
column_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY [ constraint_option ] [...] |
{ [ FOREIGN KEY ]
REFERENCES parent_table [ ( parent_column [, ...] ) ]
[ foreign_key_option | constraint_option ] [...]
}
}
}
constraint_option
{ NOT ENFORCED |
DEFERRABLE |
INITIALLY DEFERRED |
{ RELY | NORELY } }
foreign_key_option
{ MATCH FULL |
ON UPDATE NO ACTION |
ON DELETE NO ACTION }
Para compatibilidade com dialetos SQL não padrão, você pode especificar ENABLE NOVALIDATE
em vez de NOT ENFORCED DEFERRABLE INITIALLY DEFERRED
.
Parameters
CONSTRAINT
DesignaçãoOpcionalmente, especifica um nome para o constraint. O nome tem de ser único no schema. Se nenhum nome for fornecido, o Azure Databricks generate um.
PRIMARY KEY
( key_column [ SÉRIES CRONOLÓGICAS ] [, ...] ) [ constraint_option [...] ]Aplica-se a: Databricks SQL Databricks Runtime 11.3 LTS e superior Unity Catalog apenas
Adiciona uma chave primária informativa constraint à exibição table ou materializada. Uma visão table ou materializada pode ter, no máximo, uma chave primária.
Os columns de chave primária são implicitamente definidos como
NOT NULL
.Não há suporte para restrições de chave primária para tables no
hive_metastore
catalog.-
Uma column do sujeito table ou visão materializada. Column nomes não devem ser repetidos.
TIMESERIES
Aplica-se a: Databricks SQL Databricks Runtime 13.3 LTS e superior
Opcionalmente, rotula o componente column da chave primária como representando uma série temporal.
-
PRIMARY KEY [ constraint_option ] [...]
Adiciona uma única chave primária columnconstraint à vista materializada table ou tabela, usando a definição da chave primária anterior column.
Isto
column_constraint
é equivalente aotable_constraint
PRIMARY KEY (key_column) [ constraint_option ] [...]
FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option
Aplica-se a: Databricks SQL Databricks Runtime 11.3 LTS e superior Unity Catalog apenas
Adiciona uma chave estrangeira informacional (integridade referencial) constraint à visualização table ou materializada.
Não há suporte para restrições de chave estrangeira para tables no
hive_metastore
catalog.Não são permitidas restrições de chave estrangeira que apenas diferem na permutação da chave estrangeira columns.
-
Uma column do sujeito table ou visão materializada. Column nomes não devem ser repetidos. O tipo de dados de cada column deve corresponder ao tipo do
parent_column
correspondente. O número de columns deve corresponder ao número deparent_column
s. Duas chaves estrangeiras não podem partilhar um set idêntico da chave estrangeira columns. -
Especifica o modo de exibição table ou materializado ao qual a chave estrangeira se refere. O table deve ter um
PRIMARY KEY
constraintdefinido, e tu deves ter o privilégioSELECT
no table. -
Um column na table pai ou na visão materializada que faz parte de sua chave primária. Todos os columns de chave primária do table pai ou da exibição materializada devem ser listados.
Se os columns pais não estiverem listados, eles serão especificados de acordo com a ordem dada na definição de
PRIMARY KEY
. FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
Adiciona um único columnconstraint de chave estrangeira à exibição table ou materializada, usando a definição de chave estrangeira column anterior.
Isto
column_constraint
é equivalente aotable_constraint
FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
-
constraint_option
Lista as propriedades das restrições. Todas as propriedades são opcionais, mas implícitas por padrão. Cada propriedade pode, no máximo, ser especificada uma vez.
NOT ENFORCED
O Azure Databricks não toma nenhuma ação para impô-lo para linhas novas ou existentes.
DEFERRABLE
A execução constraint pode ser adiada.
INITIALLY DEFERRED
A implementação do Constraint é adiada.
NORELY
ouRELY
Aplica-se a: Databricks SQL Databricks Runtime 14.2 e superior para restrições
PRIMARY KEY
Aplica-se a: Databricks SQL Databricks Runtime 15.4 e superior para restrições de
FOREIGN KEY
Caso
RELY
, o Azure Databricks pode explorar o constraint para reescrever consultas. É da responsabilidade do utilizador garantir que o constraint seja cumprido. Confiar num constraint que não esteja satisfeito pode conduzir a resultados de consulta incorretos.A predefinição é
NORELY
.
foreign_key_option
Lista as propriedades específicas para restrições de chave estrangeira. Todas as propriedades são opcionais, mas implícitas por padrão. Cada propriedade pode, no máximo, ser especificada uma vez.
MATCH FULL
Para que a constraint seja considerada verdadeira, todas as columnvalues devem ser
NOT NULL
.ON UPDATE NO ACTION
Se o
PRIMARY KEY
pai for atualizado, o Azure Databricks não tomará nenhuma ação para restringir a chave estrangeira update ou update.ON DELETE NO ACTION
Se a linha pai for excluída, o Azure Databricks não realizará nenhuma ação para restringir a ação, update a chave estrangeira ou excluir a linha dependente.
Importante
O Azure Databricks não impõe restrições de chave primária ou chave estrangeira. Confirme as restrições de chave antes de adicionar uma chave primária ou estrangeira. Seu processo de ingestão pode fornecer essa garantia, ou você pode executar verificações em relação aos seus dados.
Exemplos
-- Create a table with a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING,
CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name));
-- create a table with a foreign key
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING,
CONSTRAINT pets_persons_fk FOREIGN KEY (owner_first_name, owner_last_name) REFERENCES persons);
-- Create a table with a single column primary key and system generated name
> CREATE TABLE customers(customerid STRING NOT NULL PRIMARY KEY, name STRING);
-- Create a table with a names single column primary key and a named single column foreign key
> CREATE TABLE orders(orderid BIGINT NOT NULL CONSTRAINT orders_pk PRIMARY KEY,
customerid STRING CONSTRAINT orders_customers_fk REFERENCES customers);