Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: Databricks SQL
Databricks Runtime
Agrega una clave principal informativa , una clave externa informativa o una restricción de comprobación aplicada a una tabla de Delta Lake existente, una vista materializada o una tabla de streaming.
Sintaxis
ADD [check_constraint | key_constraint ]
check_constraint
CONSTRAINT name CHECK ( condition ) [ ENFORCED ]
key_constraint
{ [ CONSTRAINT name ]
{
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY (foreign_key_column [, ...] )
REFERENCES parent_relation [ ( parent_column [, ...] ] )
[ constraint_option | foreign_key_option ] [...]
}
}
constraint_option
{ NOT ENFORCED |
DEFERRABLE |
INITIALLY DEFERRED |
{ NORELY | RELY } }
foreign_key_option
{ MATCH FULL |
ON UPDATE NO ACTION |
ON DELETE NO ACTION }
Para la compatibilidad con dialectos no estándar de SQL, puede especificar ENABLE NOVALIDATE
en lugar de NOT ENFORCED DEFERRABLE INITIALLY DEFERRED
.
Parámetros
check_constraint
Define una restricción de verificación para una relación.
CONSTRAINT
nombreEspecifica un nombre para la restricción. El nombre debe ser único dentro de la relación.
CHECK (
condición)
La
DEFAULT COLLATION
propiedad de la relación debe estarUTF8_BINARY
en el momento en que se agrega la restricción.condition
debe ser una expresión determinista que devuelva un valorBOOLEAN
.condition
puede estar compuesto por literales, identificadores de columna dentro de la relación y funciones o operadores SQL integrados deterministas, excepto:- Funciones de agregado
- Funciones de ventana analítica
- Funciones de ventana de categoría
- Funciones de generador con valores de tabla
-
STRING
columnas con intercalaciones distintas deUTF8_BINARY
condition
tampoco debe contener ninguna subconsulta.Para que se cumpla una restricción
CHECK
en Azure Databricks, debe evaluarse comotrue
.Delta Lake comprueba la validez de la restricción de comprobación con los datos nuevos y existentes. Si alguna fila existente infringe la restricción, se producirá un error.
key_constraint
Importante
Esta característica está en versión preliminar pública.
Se aplica a:
Databricks SQL
Databricks Runtime 11.3 LTS y versiones posteriores
Define una clave principal informativa o una restricción de clave externa informativa para una relación. Las restricciones de clave informativa no se aplican, pero pueden mejorar el rendimiento al admitir optimizaciones de consultas.
CONSTRAINT
nombreEspecifica un nombre opcional para la restricción. El nombre debe ser único dentro del esquema. Si no se proporciona ningún nombre, Azure Databricks generará uno.
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]
Se aplica a:
solo Unity Catalog
Agrega una restricción de clave principal a la relación. Una relación puede tener como máximo una clave principal.
Las restricciones de clave principal no se admiten para las relaciones del
hive_metastore
catálogo.-
Columna de la relación de sujeto definida como
NOT NULL
. Los nombres de columna no se deben repetir. TIMESERIES
Se aplica a:
Databricks SQL
Databricks Runtime 13.3 LTS y versiones posteriores
Opcionalmente, etiqueta el componente de columna de clave principal para indicar que representa una serie temporal.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_relation [ ( parent_column [, ...] ) ] foreign_key_option
Se aplica a:
solo Unity Catalog
Agrega una restricción de clave externa (integridad referencial) a la relación.
No se admiten restricciones de clave externa para las relaciones del
hive_metastore
catálogo.-
Columna de la relación del tema. Los nombres de columna no se deben repetir. El tipo de datos de cada columna debe coincidir con el tipo de la columna coincidente especificada como
parent_column
. El número de columnas debe coincidir con el número de apariciones deparent_columns
. Dos claves externas no pueden compartir un conjunto idéntico de columnas de clave externa. -
Especifica la relación a la que hace referencia la clave externa. La relación debe tener una restricción definida
PRIMARY KEY
, y usted debe tener el privilegioSELECT
sobre la relación. -
Columna de la relación primaria que forma parte de su clave principal. Se deben enumerar todas las columnas de clave principal de la relación primaria.
Si no se enumeran las columnas primarias, se especifican de forma implícita según el orden determinado en la definición
PRIMARY KEY
.
No se permiten restricciones de clave externa que solo difieren en la permutación de las columnas de la clave externa.
-
constraint_option
Enumera las propiedades de las restricciones. Todas las propiedades son opcionales pero implícitas de manera predeterminada. Cada propiedad se puede especificar como máximo una vez.
NOT ENFORCED
Azure Databricks no realiza ninguna acción para aplicarla a las filas existentes o nuevas.
DEFERRABLE
La aplicación de las restricciones se puede aplazar.
INITIALLY DEFERRED
Se aplaza la aplicación de las restricciones.
NORELY
oRELY
Se aplica a:
Databricks SQL
Databricks Runtime 14.2 y versiones posteriores para restricciones de
PRIMARY KEY
Se aplica a:
Databricks SQL
Databricks Runtime 15.4 y versiones posteriores para restricciones de
FOREIGN KEY
Si
RELY
, Azure Databricks puede aprovechar la restricción para reescribir las consultas. Es responsabilidad del usuario asegurarse de que se cumple la restricción. Confiar en una restricción que no se cumple puede provocar resultados de consulta incorrectos.El valor predeterminado es
NORELY
.
foreign_key_option
Enumera las propiedades específicas de las restricciones de clave externa. Todas las propiedades son opcionales pero implícitas de manera predeterminada. Cada propiedad se puede especificar como máximo una vez.
MATCH FULL
Para que la restricción se considere como True, todos los valores de columna deben ser
NOT NULL
.ON UPDATE NO ACTION
Si se actualiza el elemento primario
PRIMARY KEY
, Azure Databricks no realizará ninguna acción para restringir la actualización ni actualizará la clave externa.ON DELETE NO ACTION
Si se elimina la fila primaria, Azure Databricks no realizará ninguna acción para restringir la acción, actualizar la clave externa ni eliminar la fila dependiente.
Importante
Azure Databricks no aplica restricciones de clave principal ni de clave externa. Confirme las restricciones de clave antes de agregar una clave principal o externa. El proceso de ingesta puede proporcionar dicha garantía o también puede ejecutar comprobaciones en los datos.
Ejemplos
-- Add a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING);
> ALTER TABLE persons ADD CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name);
-- Add a foreign key which Databricks does not enforce, but can rely upon.
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING);
> ALTER TABLE pets ADD CONSTRAINT pets_persons_fk
FOREIGN KEY(owner_first_name, owner_last_name) REFERENCES persons
NOT ENFORCED RELY;
-- Add a check contraint
> ALTER TABLE pets ADD CONSTRAINT pets_name_not_cute_chk CHECK (length(name) < 20);