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