Junior — Middle
Milyen viselkedést mutat a PostgreSQL adatbázis, ha egy külső kulccsal egy másik táblához kapcsolódó rekord törlésekor nem adunk meg egyértelmű műveletet?
sobes.tech MI
Válasz az MI-től
A PostgreSQL-ben, ha egy másik táblához külső kulcs révén kapcsolódó rekord törlésekor nem adunk meg egyértelmű műveletet (például ON DELETE CASCADE vagy ON DELETE SET NULL), akkor alapértelmezés szerint a viselkedés ON DELETE NO ACTION.
Ez azt jelenti, hogy egy olyan rekord törlése, amelyre egy másik tábla hivatkozik, külső kulcs korlátozási hibát eredményez, és a törlés nem hajtódik végre.
Így az adatbázis megakadályozza az adatok integritásának megsértését, megakadályozva egy szülő rekord törlését, amíg kapcsolódó gyermek rekordok léteznek.
Példa:
-- Megrendelések tábla külső kulccsal a vevők táblára
CREATE TABLE customers (
id SERIAL PRIMARY KEY
);
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INT REFERENCES customers(id)
);
-- Megpróbálja törölni egy vevőt, akinek vannak megrendelései, `ON DELETE CASCADE` nélkül
DELETE FROM customers WHERE id = 1; -- hibát fog eredményezni
Az automatikus törlés engedélyezéséhez a kapcsolódó rekordok esetében, explicit módon meg kell adni az ON DELETE CASCADE opciót a külső kulcs létrehozásakor.