Junior — Middle
Bir yabancı anahtar aracılığıyla başka bir tabloyla ilişkili kaydı silerken, açık bir işlem belirtilmediğinde PostgreSQL veritabanının gözlemlenen davranışı nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
PostgreSQL'de, başka bir tabloyla dış anahtar aracılığıyla ilişkili bir kaydı silerken, açık bir eylem belirtilmemişse (örneğin, ON DELETE CASCADE veya ON DELETE SET NULL), varsayılan davranış ON DELETE NO ACTION'dır.
Bu, başka bir tablodan referans verilen bir kaydı silmeye çalışmanın, dış anahtar kısıtlaması hatasına yol açacağı ve silme işleminin gerçekleştirilmeyeceği anlamına gelir.
Bu şekilde, veritabanı, ilişkili çocuk kayıtları mevcut olduğu sürece ebeveyn kaydını silmeyi engelleyerek veri bütünlüğünü korur.
Örnek:
-- Müşteri tablosu ve dış anahtar ile siparişler tablosu
CREATE TABLE customers (
id SERIAL PRIMARY KEY
);
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INT REFERENCES customers(id)
);
-- Çocuk siparişleri olan bir müşteriyi, ON DELETE CASCADE olmadan silmeye çalışma
DELETE FROM customers WHERE id = 1; -- hata verecektir
İlişkili kayıtların otomatik silinmesine izin vermek için, dış anahtar oluşturulurken açıkça ON DELETE CASCADE belirtilmelidir.