Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Azure Databricks biedt ondersteuning voor standaard sql-beperkingsbeheercomponenten:
- Afgedwongen beperkingen controleren de gegevensintegriteit voordat u rijen toevoegt aan een tabel.
- Beperkingen voor informatieve primaire sleutels en refererende sleutels 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 pijplijnverwachtingen voor nadere informatie over een gerelateerd concept in Lakeflow Spark Declaratieve Pijplijnen.
Beperkingen voor Azure Databricks
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.
Belangrijk
Wanneer u een constraint toevoegt, werkt Azure Databricks de protocolversie van de tabelschrijver automatisch bij als de vorige schrijversprotocolversie kleiner was dan 3. Zie compatibiliteit en protocollen van Delta Lake-functies om inzicht te hebben in versiebeheer van tabelprotocollen en wat het betekent om de protocolversie bij te werken.
een NOT NULL beperking instellen in Azure Databricks
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.
een CHECK beperking instellen in Azure Databricks
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.
Definieer primaire sleutel- en vreemde sleutelsrelaties
Primaire-sleutel- en vreemde-sleutelbeperkingen zijn beschikbaar voor tabellen in Unity Catalog en Delta Lake in Databricks Runtime 13.3 LTS en hoger. Ze zijn algemeen beschikbaar in Databricks Runtime 15.2 en hoger.
Primaire en vreemde sleutels zijn alleen informatief en worden niet afgedwongen. Vreemde sleutels moeten verwijzen naar een primaire sleutel in een andere tabel. Beperkingen voor informatieve sleutels kunnen de prestaties verbeteren met queryoptimalisaties.
information_schema Voer een query uit of gebruik DESCRIBE om meer informatie te krijgen over hoe beperkingen worden toegepast in een bepaalde catalogus.
Toevoegen aan nieuwe tabellen
Declareer primaire sleutels en vreemde sleutels als onderdeel van de tabelspecificatieclausule 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);
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;