Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime
Fügt einer vorhandenen Delta Lake-Tabelle einen informationsalen Primärschlüssel, einen informationsalen Fremdschlüssel oder eine erzwungene Prüfeinschränkung hinzu.
Syntax
ADD [check_constraint | key_constraint ]
check_constraint
CONSTRAINT name CHECK ( condition )
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 }
Zum Gewährleisten der Kompatibilität mit nicht standardmäßigen SQL-Dialekten können Sie ENABLE NOVALIDATE anstelle von NOT ENFORCED DEFERRABLE INITIALLY DEFERRED angeben.
Parameter
check_constraintDefiniert eine Check-Constraint für eine Relation.
CONSTRAINTNameGibt einen Namen für die Einschränkung an. Der Name muss innerhalb der Beziehung eindeutig sein.
CHECK (Bedingung)Die
DEFAULT COLLATIONBeziehung mussUTF8_BINARYzu dem Zeitpunkt sein, zu dem die Einschränkung hinzugefügt wird.conditionmuss ein deterministischer Ausdruck sein, derBOOLEANzurückgibt.conditionkann aus Literalen, Spaltenbezeichnern innerhalb der Beziehung und deterministischen, integrierten SQL-Funktionen oder Operatoren bestehen, außer:- Aggregatfunktionen
- Analysefensterfunktionen
- Rangfolgefensterfunktionen
- Tabellenwertgenerator-Funktionen
-
STRING-Spalten mit anderen Sortierungen alsUTF8_BINARY
Darüber hinaus darf
conditionkeine Unterabfrage enthalten.Damit eine
CHECK-Einschränkung in Azure Databricks erfüllt ist, muss sie alstrueausgewertet werden.Delta Lake überprüft die Gültigkeit der CHECK-Einschränkung sowohl für neue als auch für vorhandene Daten. Wenn eine vorhandene Zeile gegen die Einschränkung verstößt, wird ein Fehler ausgelöst.
key_constraintWichtig
Dieses Feature befindet sich in der Public Preview.
Gilt für:
Databricks SQL
Databricks Runtime 11.3 LTS und höhereDefiniert eine informative Primärschlüssel- oder informative Fremdschlüsseleinschränkung für eine Beziehung. Informationsschlüsseleinschränkungen werden nicht erzwungen, können jedoch die Leistung verbessern, indem Abfrageoptimierungen unterstützt werden.
CONSTRAINTNameGibt optional einen Namen für die Einschränkung an. Der Name muss innerhalb des Schemas eindeutig sein. Wenn kein Name angegeben wird, generiert Azure Databricks einen Namen.
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]Gilt für:
Nur Unity CatalogFügt der Relation eine Primärschlüsselbeschränkung hinzu. Eine Beziehung kann höchstens einen Primärschlüssel aufweisen.
Primärschlüsseleinschränkungen werden für Beziehungen im
hive_metastoreKatalog nicht unterstützt.-
Eine Spalte der Betreffbeziehung, die als
NOT NULLdefiniert ist. Spaltennamen dürfen nicht wiederholt werden. TIMESERIESGilt für:
Databricks SQL
Databricks Runtime 13.3 LTS und höherBezeichnet optional die Komponente für Primärschlüsselspalten als Darstellung einer Zeitreihe.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_relation [ ( parent_column [, ...] ) ] foreign_key_optionGilt für:
Nur Unity CatalogFügt der Relation eine Fremdschlüsseleinschränkung (referenzielle Integrität) hinzu.
Fremdschlüsseleinschränkungen werden für Beziehungen im
hive_metastoreKatalog nicht unterstützt.-
Eine Spalte der Subjektbeziehung. Spaltennamen dürfen nicht wiederholt werden. Der Datentyp jeder Spalte muss mit dem Typ der entsprechenden
parent_columnübereinstimmen. Die Anzahl von Spalten muss der Anzahl vonparent_columnss entsprechen. Zwei Fremdschlüssel können nicht über einen identischen Satz von Fremdschlüsselspalten verfügen. -
Gibt die Beziehung an, auf die sich der Fremdschlüssel bezieht. Die Beziehung muss über eine definierte
PRIMARY KEYEinschränkung verfügen, und Sie müssen über dieSELECTBerechtigung für die Beziehung verfügen. -
Eine Spalte in der übergeordneten Relation, die zum Primärschlüssel gehört. Alle Primärschlüsselspalten der übergeordneten Beziehung müssen aufgelistet werden.
Wenn übergeordnete Spalten nicht aufgeführt sind, wird davon ausgegangen, dass sie in der Reihenfolge vorliegen, die in der
PRIMARY KEY-Definition angegeben ist.
Fremdschlüsseleinschränkungen, die sich nur in der Permutation der Fremdschlüsselspalten unterscheiden, sind nicht zulässig.
-
constraint_optionListet die Eigenschaften der Einschränkungen auf. Alle Eigenschaften sind optional, werden jedoch standardmäßig impliziert. Jede Eigenschaft kann höchstens einmal angegeben werden.
NOT ENFORCEDAzure Databricks führt keine Aktion aus, um dies für vorhandene oder neue Zeilen zu erzwingen.
DEFERRABLEDie Erzwingung von Einschränkungen kann verzögert werden.
INITIALLY DEFERREDDie Erzwingung von Einschränkungen wird verzögert.
NORELYoderRELYGilt für:
Databricks SQL
Databricks Runtime, Version 14.2 und höher für PRIMARY KEY-EinschränkungenGilt für:
Databricks SQL
Databricks Runtime, Version 15.4 und höher für FOREIGN KEY-EinschränkungenBei
RELYverletzt Azure Databricks möglicherweise die Einschränkung zum Umschreiben von Abfragen. Es liegt in der Verantwortung des Benutzers, sicherzustellen, dass die Einschränkung erfüllt ist. Die Verwendung einer Einschränkung, die nicht erfüllt ist, kann zu fehlerhaften Abfrageergebnissen führen.Der Standardwert ist
NORELY.
foreign_key_optionListet die spezifischen Eigenschaften von Fremdschlüsseleinschränkungen auf. Alle Eigenschaften sind optional, werden jedoch standardmäßig impliziert. Jede Eigenschaft kann höchstens einmal angegeben werden.
MATCH FULLDamit die Einschränkung als „true“ gilt, müssen alle Spaltenwerte
NOT NULLsein.ON UPDATE NO ACTIONWenn der übergeordnete
PRIMARY KEYaktualisiert wird, führt Azure Databricks keine Aktion aus, um die Aktualisierung einzuschränken oder den Fremdschlüssel zu aktualisieren.ON DELETE NO ACTIONWenn die übergeordnete Zeile gelöscht wird, führt Azure Databricks keine Aktion aus, um die Aktion einzuschränken, den Fremdschlüssel zu aktualisieren oder die abhängige Zeile zu löschen.
Wichtig
Azure Databricks erzwingt keine Primärschlüssel- oder Fremdschlüsseleinschränkungen. Überprüfen und bestätigen Sie Schlüsseleinschränkungen, bevor Sie einen Primär- oder Fremdschlüssel hinzufügen. Ihr Erfassungsprozess könnte diese Sicherheit bieten, oder Sie können Überprüfungen an Ihren Daten durchführen.
Beispiele
-- 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);