PostgreSql Cascade Delete

PostgreSql Cascade Delete

"Når du jobber med PostgreSQL -databaser, vil du møte forekomster der du må slippe poster fra en tabell. Før du kjører en slettespørsmål, er det viktig å sikre at tabellen ikke etterlater noen ufullstendige forhold mellom tabellene.

I PostgreSQL kan vi bruke Cascade Delete -funksjonen for å oppnå dette. Denne funksjonen lar en sletteoperasjon fjerne de spesifiserte postene og eventuelle utenlandske nøkler som refererer til dem.

Ved hjelp av denne artikkelen vil vi gjennomgå hvordan du utfører en kaskade slett i PostgreSQL.”

PostgreSql Cascade Delete

Cascade Delete -funksjonen er veldig enkel. Det sikrer at sletting av foreldrejournaler fjerner også barnepostene. For å unngå å fjerne barnejournaler ved et uhell, kan du stille de utenlandske nøkkelbegrensningene i overordnede tabellen til null.

La oss se hvordan vi kan oppnå dette.

Start med å sette opp en eksempeldatabase. I PSQL -verktøyet, kjør kommandoen:

1
2
3
4
5
6
7
8
Opprette database "cascade_delete_db;"
MED
Eier = Postgres
Koding = 'utf8'
LC_COLLATE = 'C'
LC_CTYPE = 'C'
Tablespace = pg_default
Tilkoblingsgrense = -1;

Når du er opprettet, bytter du til den databasen ved å kjøre kommandoen:

1
\ C CASCADE_DELETE_DB;

Neste, la oss opprette foreldretabellen ved å kjøre spørringen:

1
2
3
4
5
6
7
Lag tabellbrukere (
ID Seriell primærnøkkel,
full_name varchar (100),
E -post varchar (255),
land varchar (50),
avdeling_foreign_key int ikke null
);

Deretter kan vi lage barnebordet som:

1
2
3
4
Lag tabellavdeling (
user_id seriell primærnøkkel,
Avdelingen varchar (50)
);

Deretter må vi legge til en fremmed nøkkelbegrensning til overordnede tabellen, som vist i kommandoen nedenfor:

1
2
ALTER TABLE -brukere legger til utenlandsk nøkkel (avdeling_foreign_key)
REFERANSER DEPARTMENT (User_id) på Delete Cascade;

Vi kan nå sette inn noen eksempeldata i tabellene som vist:

1
2
3
4
5
6
7
8
Sett inn i avdeling (avdeling) verdier
('Game Development'),
('Dev-ops'),
('Backend-dev');
Sett inn brukere (full_navn, e -post, land, avdeling_foreign_key) verdier
('Alley K', '[email protected] ',' oss ', 1),
('Kaspa V', 'V.spø[email protected] ',' CA ', 2),
('Dev.W ',' [email protected] ',' af ', 3);

Vi kan deretter spørre tabellene som:

1
Velg * fra brukere;

Dette skal returnere tabellen:

Fra avdelingens bord kan vi kjøre:

1
Velg * fra avdelingen;

Det resulterende tabellen:

Når alle eksempeldataene er klare, kan vi utføre en kaskade -sletting som vist i spørringen nedenfor:

1
Slett fra avdelingen der avdelingen = 'dev-ops';

I uttalelsen over bruker vi den normale slettespørsmålet for å fjerne en post der avdelingen er lik “Dev-ops.”Siden vi setter Cascade Delete, kan vi sjekke brukernes tabell for å bekrefte brukeren med avdelingen_foreign_key på 2 er droppet.

1
Velg * fra brukere;

Vi kan se at bare to poster er i brukernes tabell til tross for at vi fjerner posten fra avdelingens tabell.

Gratulerer, du har lært hvordan du utfører en kaskade slett i PostgreSql.

Avslutning

Denne opplæringen lærte deg hvordan du kobler to tabeller ved hjelp av en utenlandsk nøkkel og angir en Cascade Delete -funksjon.

Takk for at du leste!!