samenvatting: in deze tutorial leert u meer over PostgreSQL foreign key en hoe u buitenlandse sleutels kunt toevoegen aan tabellen met behulp van beperkingen met betrekking tot buitenlandse sleutels.
Inleiding tot PostgreSQL foreign Key Constraint
een foreign key is een kolom of een groep kolommen in een tabel die verwijzen naar de primaire sleutel van een andere tabel.
de tabel die de vreemde sleutel bevat wordt de verwijzingstabel of dochtertabel genoemd. En de tabel waarnaar wordt verwezen door de buitenlandse sleutel wordt de tabel waarnaar wordt verwezen of de bovenliggende tabel genoemd.,
een tabel kan meerdere vreemde sleutels hebben, afhankelijk van zijn relaties met andere tabellen.
in PostgreSQL definieert u een vreemde sleutel met behulp van de FOREIGN key constraint. De FOREIGN key constraint helpt de referentiële integriteit van gegevens tussen de kind-en oudertabellen te behouden.
een FOREIGN key constraint geeft aan dat waarden in een kolom of een groep kolommen in de dochtertabel gelijk zijn aan de waarden in een kolom of een groep kolommen van de bovenliggende tabel.,
PostgreSQL foreign key constraint syntax
het volgende illustreert een FOREIGN key constraint syntax:
In deze syntaxis:
- geef eerst de naam voor de foreign key constraint op na het
CONSTRAINT
sleutelwoord. DeCONSTRAINT
clausule is optioneel. Als je het weglaat, zal PostgreSQL een automatisch gegenereerde naam toewijzen. - ten tweede, Specificeer een of meer buitenlandse sleutelkolommen tussen haakjes na de
FOREIGN KEY
sleutelwoorden., - ten derde, specificeer de bovenliggende tabel en bovenliggende sleutelkolommen waarnaar wordt verwezen door de buitenlandse sleutelkolommen in de
clausule.
- tot slot, specificeer de delete en update acties in de
ON DELETE
enON UPDATE
clausules.
de acties verwijderen en bijwerken bepalen het gedrag wanneer de primaire sleutel in de bovenliggende tabel wordt verwijderd en bijgewerkt. Aangezien de primaire sleutel zelden wordt bijgewerkt, wordt de ON UPDATE action
in de praktijk niet vaak gebruikt. We zullen ons richten op de actie ON DELETE
.,
PostgreSQL ondersteunt de volgende acties:
- SET NULL
- STANDAARD
- BEPERKEN
- GEEN ACTIE
- TRAPSGEWIJS
PostgreSQL foreign key constraint voorbeelden
De volgende overzichten maken van de customers
en contacts
tabellen:
In dit voorbeeld is de customers
tabel is de bovenliggende tabel en de contacts
tabel is de onderliggende tabel.
elke klant heeft nul of veel contacten en elk contact behoort tot nul of één klant.,
De customer_id
kolom in de contacts
tabel is de kolom met vreemde sleutels die verwijst naar de kolom met primaire sleutels met dezelfde naam in de customers
tabel.
De volgende foreign key constraint fk_customer
in de contacts
tabel definieert de customer_id
als de refererende sleutel:
Omdat de foreign key constraint niet de ON DELETE
en ON UPDATE
actie, ze zijn standaard NO ACTION
.,
GEEN ACTIE
De volgende voegt de gegevens in de customers
en contacts
tafels
De volgende instructie verwijdert de klant-id 1 van de customers
tabel:
Code language: SQL (Structured Query Language) (sql)
door de ON DELETE NO ACTION
, PostgreSQL problemen een schending van beperking, omdat het te verwijzen naar de rijen van de klant-id 1 van het bestaan nog steeds in de contacts
tabel:
De RESTRICT
actie is vergelijkbaar met de NO ACTION
., Het verschil ontstaat alleen wanneer u de FOREIGN key constraint definieert als DEFERRABLE
met een INITIALLY DEFERRED
of INITIALLY IMMEDIATE
modus. We zullen meer hierover bespreken in de volgende tutorial.
null
de SET NULL
stelt automatisch NULL
in op de buitenlandse sleutelkolommen in de referentierijenrijen van de dochtertabel wanneer de rijen waarnaar wordt verwezen in de bovenliggende tabel worden verwijderd.,
De volgende uitspraken vallen het monster van tafels en opnieuw te maken met de vreemde sleutel die gebruikt de SET NULL
actie in de ON DELETE
component:
De volgende uitspraken invoegen van gegevens in de customers
en contacts
tabellen:
om Te zien hoe de SET NULL
werkt, verwijderen we de klant met id 1 van de customers
tabel:
Code language: SQL (Structured Query Language) (sql)
door de ON DELETE SET NULL
actie het verwijzen naar rijen in de contacts
tabel ingesteld op NULL., De volgende verklaring geeft de gegevens in de contacts
tabel:
Als duidelijk kan worden gezien vanaf de uitgang, de rijen met de customer_id
1 hebben nu de customer_id
sets NULL
TRAPSGEWIJS
De ON DELETE CASCADE
verwijdert automatisch alle verwijzen naar de rijen in de onderliggende tabel wanneer de genoemde rijen in de bovenliggende tabel worden verwijderd., In de praktijk is ON DELETE CASCADE
de meest gebruikte optie.
de volgende statements maken de voorbeeldtabellen opnieuw.,iv> wijzigingen CASCADE
:
De volgende instructie verwijdert de klant-id 1:
door de ON DELETE CASCADE
actie verwijzen naar de rijen in de contacts
tabel automatisch worden verwijderd:
STANDAARD INSTELLEN
De ON DELETE SET DEFAULT
bepaalt de standaard waarde in de refererende sleutel van de kolom verwijzen naar de rijen in de onderliggende tabel wanneer de genoemde rijen van de bovenliggende tabel worden verwijderd.,nt aan een bestaande tabel
Om het toevoegen van een foreign key constraint aan de bestaande tabel, gebruik je de volgende vorm van de instructie ALTER TABLE:
Wanneer u een foreign key constraint met ON DELETE CASCADE
optie om een bestaande tabel, dient u deze stappen te volgen:
ten Eerste, drop bestaande buitenlandse belangrijke beperkingen:
Code language: SQL (Structured Query Language) (sql)
ten Eerste, het toevoegen van een nieuwe foreign key constraint met ON DELETE CASCADE
optreden:
In deze tutorial, heb je geleerd over PostgreSQL vreemde sleutels en het gebruik van de foreign key constraint te maken van vreemde sleutels voor een tabel.,
- Was deze tutorial nuttig ?
- YesNo
Geef een reactie