Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime
Voegt een informatieve primaire sleutel, een informatieve refererende sleutel of een informatieve unieke beperking toe als onderdeel van een CREATE TABLE of CREATE MATERIALIZED VIEW instructie.
Als u een controlebeperking wilt toevoegen aan een Delta Lake-tabel, gebruikt u ALTER TABLE nadat de tabel is gemaakt.
Syntaxis
Gebruik de table_constraint component om beperkingen te definiëren die meerdere kolommen omvatten of om de syntaxis te scheiden van de kolomdefinitie.
table_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
UNIQUE ( key_column [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY ( foreign_key_column [, ...] )
REFERENCES parent_table [ ( parent_column [, ...] ) ]
[ foreign_key_option | constraint_option ] [...]
}
}
}
Gebruik de column_constraint-component om beperkingen te definiëren die specifiek zijn voor één kolomdefinitie.
column_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY [ constraint_option ] [...] |
UNIQUE [ 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 }
Voor compatibiliteit met niet-standaard SQL-dialecten kunt u opgeven ENABLE NOVALIDATE in plaats van NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.
Parameterwaarden
CONSTRAINTnaamHiermee geeft u desgewenst een naam op voor de beperking. De naam moet uniek zijn binnen het schema. Als er geen naam is opgegeven, genereert Azure Databricks er een.
PRIMARY KEY( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]nl-NL: Van toepassing op:
Databricks SQL
Databricks Runtime 11.3 LTS en hoger
alleen Unity CatalogHiermee voegt u een primaire sleutelbeperking ter informatie toe aan de tabel of gerealiseerde weergave. Een tabel of gerealiseerde weergave kan maximaal één primaire sleutel hebben.
Primaire sleutelkolommen worden impliciet gedefinieerd als
NOT NULL.Primaire-sleutelbeperkingen worden niet ondersteund voor tabellen in de
hive_metastorecatalogus.-
Een kolom van de onderwerptabel of materiële weergave. Kolomnamen mogen niet worden herhaald.
TIMESERIESVan toepassing op:
Databricks SQL
Databricks Runtime 13.3 LTS en hogerU kunt desgewenst het primaire sleutelkolomelement labelen als een tijdreeks.
-
PRIMARY KEY [ constraint_option ] [...]Hiermee voegt u een primaire sleutelbeperking voor één kolom toe aan de tabel- of gerealiseerde weergave, met behulp van de voorgaande sleutelkolomdefinitie.
Dit
column_constraintkomt overeen met detable_constraintPRIMARY KEY (key_column) [ constraint_option ] [...]UNIQUE ( key_column [, ...] ) [ constraint_option [...] ]Van toepassing op:
Databricks
Databricks Runtime 18.2 en hoger
Unity Catalog aanVoegt een informatieve unieke beperking toe aan de tabel. Een tabel kan meerdere unieke beperkingen hebben.
Unieke beperkingen worden niet ondersteund voor tabellen in de
hive_metastorecatalogus.Kolommen in een
UNIQUEbeperking kunnen null-waarden zijn, inclusief wanneer naar de beperking wordt verwezen door een refererende sleutel.NULLwaarden inUNIQUEkolommen worden behandeld als verschillend van elkaar, dus dubbeleNULLwaarden schenden de semantiek van eenUNIQUEbeperking niet.-
Een kolom van de onderwerptabel. Kolomnamen mogen niet worden herhaald.
-
UNIQUE [ constraint_option ] [...]Hiermee voegt u een unieke beperking voor één kolom toe aan de tabel met behulp van de voorgaande sleutelkolomdefinitie.
Dit
column_constraintkomt overeen met detable_constraintUNIQUE (key_column) [ constraint_option ] [...]FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_optionnl-NL: Van toepassing op:
Databricks SQL
Databricks Runtime 11.3 LTS en hoger
alleen Unity CatalogHiermee voegt u een informatieve vreemde-sleutelbeperking (referentiële integriteit) toe aan de tabel of gerealiseerde weergave.
Beperkingen voor foreign keys worden niet ondersteund voor tabellen in de
hive_metastorecatalog.Beperkingen voor vreemde sleutels die alleen verschillen in de permutatie van de kolommen met vreemde sleutels zijn niet toegestaan.
-
Een kolom van de onderwerptabel of materiële weergave. Kolomnamen mogen niet worden herhaald. Het gegevenstype van elke kolom moet overeenkomen met het type overeenkomende
parent_column. Het aantal kolommen moet overeenkomen met het aantalparent_columns. Twee vreemde sleutels kunnen geen identieke set vreemde-sleutelkolommen delen. -
Hiermee geeft u de tabel of gematerialiseerde weergave waarnaar de vreemde sleutel verwijst. De tabel moet een gedefinieerde
PRIMARY KEYbeperking hebben of, in Databricks Runtime 18.2 en hoger, een gedefinieerdeUNIQUEbeperking en u moet deSELECTbevoegdheid voor de tabel hebben. -
Een kolom in de bovenliggende tabel of gerealiseerde weergave die deel uitmaakt van de primaire sleutel of, in Databricks Runtime 18.2 en hoger, onderdeel van een unieke beperking. Alle primaire-sleutelkolommen of unieke beperkingskolommen van de bovenliggende tabel of gerealiseerde weergave moeten worden weergegeven.
Als ouderkolommen niet worden weergegeven, worden deze gespecificeerd door de volgorde die is opgegeven in de
PRIMARY KEY-definitie. FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_optionVoegt een foreign key-constraint voor één kolom toe aan de tabel of gematerialiseerde weergave, gebruikmakend van de voorgaande definitie van de foreign key-kolom.
Dit
column_constraintkomt overeen met detable_constraintFOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
-
beperkingsoptie
Hiermee worden de eigenschappen van de beperkingen weergegeven. Alle eigenschappen zijn optioneel, maar worden standaard geïmpliceerd. Elke eigenschap kan maximaal eenmaal worden opgegeven.
NOT ENFORCEDAzure Databricks voert geen actie uit om deze af te dwingen voor bestaande of nieuwe rijen.
DEFERRABLEDe afdwinging van beperkingen kan worden uitgesteld.
INITIALLY DEFERREDAfdwingen van beperkingen wordt uitgesteld.
NORELYofRELYVan toepassing op:
Databricks SQL
Databricks Runtime 14.2 en hoger voor beperkingen PRIMARY KEYnl-NL: Van toepassing op:
Databricks SQL
Databricks Runtime 15.4 en hoger voor FOREIGN KEYbeperkingenVan toepassing op:
Databricks
Databricks Runtime 18.2 en hoger voor UNIQUEbeperkingenAls
RELYAzure Databricks de beperking kan gebruiken om query's te herschrijven en te optimaliseren. Het is de verantwoordelijkheid van de gebruiker om ervoor te zorgen dat aan de beperking wordt voldaan. Als u afhankelijk bent van een beperking die niet is voldaan, kan dit leiden tot onjuiste queryresultaten. Voor queryoptimalisaties die zijn gekoppeld aan deRELYopdracht, moeten query's worden uitgevoerd op berekeningen met Photon-functionaliteit. Zie Wat is Photon?De standaardwaarde is
NORELY.
foreign_key_optie
Geeft een lijst van de eigenschappen die specifiek zijn voor foreign key-beperkingen. Alle eigenschappen zijn optioneel, maar worden standaard geïmpliceerd. Elke eigenschap kan maximaal eenmaal worden opgegeven.
MATCH FULLAls de beperking als waar moet worden beschouwd, moeten alle kolomwaarden worden
NOT NULL.ON UPDATE NO ACTIONAls de bovenliggende
PRIMARY KEYwordt bijgewerkt, onderneemt Azure Databricks geen actie om de update te beperken of om de vreemde sleutel bij te werken.ON DELETE NO ACTIONAls de parent-rij wordt verwijderd, onderneemt Azure Databricks geen actie om de handeling te beperken, de refererende sleutel bij te werken, of de afhankelijke rij te verwijderen.
Belangrijk
Azure Databricks dwingt geen primaire sleutel, refererende sleutel of unieke beperkingen af. Bevestig sleutelbeperkingen voordat u een primaire sleutel, refererende sleutel of unieke beperking toevoegt. Uw opnameproces kan dergelijke zekerheid bieden of u kunt controles uitvoeren op basis van uw gegevens.
Voorbeelden
-- 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);
-- Create a table with a column unique constraint
> CREATE TABLE person_contacts(first_name STRING NOT NULL, last_name STRING NOT NULL,
nickname STRING UNIQUE);
-- Create a table with a multi-column unique constraint
> CREATE TABLE person_accounts(first_name STRING NOT NULL, last_name STRING NOT NULL, account_id STRING,
CONSTRAINT person_accounts_uq UNIQUE(first_name, last_name));
-- Create a table with a foreign key that references a unique column
> CREATE TABLE pet_tags(tag STRING NOT NULL, owner_nickname STRING,
CONSTRAINT pet_tags_owner_fk FOREIGN KEY (owner_nickname) REFERENCES person_contacts(nickname));