Sobes.tech
Junior — Middle

PostgreSQL verilənlər bazasının hansı davranışı müşahidə olunur, əgər xarici açar vasitəsilə başqa bir cədvələ bağlı qeyd silinərkən, açıq hərəkət göstərilməyibsə?

sobes.tech Süni İntellekt

AI-dan cavab

PostgreSQL-də, xarici açar vasitəsilə başqa bir cədvələ bağlı qeyd silinərkən, açıq bir hərəkət göstərilməyibsə (məsələn, ON DELETE CASCADE və ya ON DELETE SET NULL), standart olaraq ON DELETE NO ACTION davranışı tətbiq olunur.

Bu, başqa bir cədvəldən istinad olunan qeyd silinməyə çalışıldıqda, xarici açar məhdudiyyəti xətası ilə nəticələnəcək və silmə əməliyyatı həyata keçirilməyəcək.

Beləliklə, verilənlər bazası, əlaqəli uşaqlar qeyd mövcud olduğu müddətdə valideyn qeydinin silinməsinin qarşısını alaraq məlumatların bütövlüyünü təmin edir.

Nümunə:

-- Müştərilər cədvəli və xarici açar ilə sifarişlər cədvəli
CREATE TABLE customers (
    id SERIAL PRIMARY KEY
);

CREATE TABLE orders (
    id SERIAL PRIMARY KEY,
    customer_id INT REFERENCES customers(id)
);

-- Sifarişləri olan müştərini, ON DELETE CASCADE olmadan silməyə cəhd
DELETE FROM customers WHERE id = 1; -- xəta ilə nəticələnəcək

Əlaqəli qeyd silmələrinə avtomatik icazə vermək üçün, xarici açar yaradılarkən açıq şəkildə ON DELETE CASCADE göstərilməlidir.