Middle+
45
Τι εγγυήσεις παρέχει ένα ξένο κλειδί σε μια σχεσιακή βάση δεδομένων; Μπορείτε να διαγράψετε μια γονική εγγραφή αν υπάρχουν ξένα κλειδιά που την αναφέρονται;
Εταιρείες όπου ρωτήθηκαν
Απάντηση από AI
sobes.tech AI
Внешний ключ (foreign key) в реляционной базе данных гарантирует целостность ссылок между таблицами. Он обеспечивает, что значение в дочерней таблице (ссылающейся) соответствует существующему значению в родительской таблице.
Гарантии:
- Нельзя вставить значение во внешний ключ, если соответствующая запись в родительской таблице отсутствует.
- Можно настроить поведение при удалении или обновлении родительской записи (CASCADE, SET NULL, RESTRICT и др.).
Можно ли удалить родительскую запись, если на неё есть внешние ключи?
- Если внешний ключ настроен с ограничением RESTRICT или NO ACTION, то удаление родительской записи будет запрещено, пока есть дочерние записи.
- Если настроено CASCADE, то при удалении родительской записи автоматически удалятся все связанные дочерние записи.
- Если SET NULL, то при удалении родительской записи внешний ключ в дочерних записях будет установлен в NULL.
Пример SQL:
ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(id)
ON DELETE CASCADE;
Здесь при удалении клиента из таблицы customers автоматически удалятся все его заказы из orders.