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.
Azure Databricks biedt ondersteuning voor standaard sql-beperkingsbeheercomponenten:
- Afgedwongen beperkingen controleren de gegevensintegriteit voordat u rijen toevoegt aan een tabel.
- Informatieve beperkingen (primaire sleutel, refererende sleutel en unieke beperkingen) definiƫren relaties tussen velden in tabellen en worden niet afgedwongen.
Voor alle beperkingen voor Azure Databricks is Delta Lake vereist.
Zie Gegevenskwaliteit beheren met verwachtingen voor pijplijnen voor een verwant concept in Lakeflow-pijplijnen.
Afgedwongen beperkingen
Wanneer een beperking wordt geschonden, mislukt de transactie met een fout. Azure Databricks ondersteunt twee typen beperkingen:
-
NOT NULL: geeft aan dat waarden in specifieke kolommen niet null mogen zijn. -
CHECK: geeft aan dat een opgegeven booleaanse expressie waar moet zijn voor elke invoerrij.
Note
Als u een beperking toevoegt, wordt het tabelschrijverprotocol bijgewerkt als de huidige schrijverversie kleiner is dan 3. Dit kan van invloed zijn op de compatibiliteit met externe Delta Lake-clients. Bekijk de compatibiliteit en protocollen van Delta Lake-functies.
NOT NULL beperking
Wanneer u een tabel maakt, geeft u NOT NULL beperkingen op in het schema. Gebruik de NOT NULL opdracht om beperkingen te verwijderen of toe te voegenALTER TABLE ... ALTER COLUMN:
CREATE TABLE people10m (
id INT NOT NULL,
firstName STRING,
middleName STRING NOT NULL,
lastName STRING,
gender STRING,
birthDate TIMESTAMP,
ssn STRING,
salary INT
);
ALTER TABLE people10m ALTER COLUMN middleName DROP NOT NULL;
ALTER TABLE people10m ALTER COLUMN ssn SET NOT NULL;
Azure Databricks controleert of alle bestaande rijen voldoen aan de beperking voordat u een beperking NOT NULL toevoegt aan een tabel.
Als u een NOT NULL beperking opgeeft voor een kolom die in een struct is genest, moet de bovenliggende struct ook niet null zijn. Kolommen die genest zijn binnen array- of map-typen accepteren geen NOT NULL beperkingen.
Zie CREATE TABLE [USING] en ALTER TABLE ALTER COLUMN.
CHECK beperking
Beheer CHECK beperkingen met de ALTER TABLE ADD CONSTRAINT en ALTER TABLE DROP CONSTRAINT opdrachten.
ALTER TABLE ADD CONSTRAINT Controleert of alle bestaande rijen voldoen aan de beperking voordat u de beperking toevoegt aan de tabel.
De volgende beperkingen gelden voor controlebeperkingen:
- Een
CHECKbeperkingsexpressie kan sql-functies in Spark gebruiken die altijd hetzelfde resultaat retourneren wanneer dezelfde argumentwaarden worden gegeven, met uitzondering van de volgende typen functies:- Door de gebruiker gedefinieerde functies.
- Aggregatiefuncties.
- Vensterfuncties.
- Functies retourneren meerdere rijen.
Toevoegen aan een bestaande tabel
CREATE TABLE people10m (
id INT,
firstName STRING,
middleName STRING,
lastName STRING,
gender STRING,
birthDate TIMESTAMP,
ssn STRING,
salary INT
);
ALTER TABLE people10m ADD CONSTRAINT dateWithinRange CHECK (birthDate > '1900-01-01');
ALTER TABLE people10m DROP CONSTRAINT dateWithinRange;
Zie ALTER TABLE ADD CONSTRAINT en ALTER TABLE DROP CONSTRAINT.
Eigenschappen van de controlebeperkingstabel bekijken
Gebruik de DESCRIBE DETAIL en SHOW TBLPROPERTIES opdrachten om de beperkingen van CHECK een tabel te bekijken.
ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);
DESCRIBE DETAIL people10m;
SHOW TBLPROPERTIES people10m;
Controlebeperkingen verwijderen
Gebruik in Databricks Runtime 15.4 LTS en hoger de DROP FEATURE opdracht om controlebeperkingen uit een tabel te verwijderen en het tabelprotocol te downgraden.
Zie Een Delta Lake-tabelfunctie verwijderen en het tabelprotocol degraderen.
Primaire sleutel, refererende sleutel en unieke beperkingen declareren
Primaire sleutel, vreemde sleutel en unieke beperkingen zijn uitsluitend informatief en worden niet afgedwongen. Ze kunnen de prestaties verbeteren via queryoptimalisaties.
- Primaire sleutel en refererende sleutel: beschikbaar voor Unity Catalog- en Delta Lake-tabellen in Databricks Runtime 13.3 LTS en hoger. GA in Databricks Runtime 15.2 en hoger. Vreemde sleutels moeten verwijzen naar een primaire sleutel of unieke restrictie in een andere tabel.
-
Uniek: beschikbaar in openbare preview voor Unity Catalog- en Delta Lake-tabellen in Databricks SQL en Databricks Runtime 18.2 en hoger. Een tabel kan meerdere unieke beperkingen hebben. Vreemde sleutels kunnen met
REFERENCES parent_table(unique_col)naar een unieke kolom verwijzen. Unieke kolommen kunnen null-waarden zijn omdatNULLwaarden worden behandeld als verschillend van elkaar.
Voer een query uit op de information_schemabeperkingen in een bepaalde catalogus, gebruik DESCRIBE TABLE EXTENDEDof gebruik SHOW CREATE TABLE om meer informatie te krijgen over hoe beperkingen worden toegepast in een bepaalde catalogus.
Toevoegen aan nieuwe tabellen
Primaire sleutels, refererende sleutels en unieke beperkingen declareren als onderdeel van de tabelspecificatiecomponent tijdens het maken van de tabel:
CREATE TABLE T(pk1 INTEGER NOT NULL, pk2 INTEGER NOT NULL,
CONSTRAINT t_pk PRIMARY KEY(pk1, pk2));
CREATE TABLE S(pk INTEGER NOT NULL PRIMARY KEY,
fk1 INTEGER, fk2 INTEGER,
CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T);
CREATE TABLE U(id INTEGER NOT NULL, email STRING NOT NULL,
CONSTRAINT u_uq_email UNIQUE(email));
CTAS-instructies bieden geen ondersteuning voor deze beperkingsclausule.
Toevoegen aan bestaande tabellen
Beperkingen toevoegen aan bestaande tabellen:
ALTER TABLE T ADD CONSTRAINT t_pk PRIMARY KEY(pk1, pk2);
ALTER TABLE S ADD CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T;
ALTER TABLE U ADD CONSTRAINT u_uq_email UNIQUE(email);