Middle+
59
Welche Garantien bietet ein Fremdschlüssel in einer relationalen Datenbank? Kann man einen Elterdatensatz löschen, wenn es Fremdschlüssel gibt, die darauf verweisen?
Unternehmen wurden gefragt
Antwort von AI
sobes.tech KI
Внешний ключ (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.