Middle+
50
Kokias garantijas teikia išorinė raktas reliacinėje duomenų bazėje? Ar galima ištrinti tėvų įrašą, jei yra išoriniai raktai, kurie jį nurodo?
Įmonės kur klausė
Atsakymas iš 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.