Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Oracle > что делает constraint |
Автор: крылья 25.4.2015, 23:11 |
ребят объясните очень простым понятным языком что такое constraint, для чего он нужен, что он делает, желательно на примере с пояснением............ у меня есть первичное поле id и к нему привязаны записи parent, моя таблица имеет иерархичную структуру, дело в том что если я удалю любое id поле то привязанные записи потеряются, ну тупо память засорять будут, мне нужно сделать ограничение чтобы для начало нужно было удалить все привязанные записи а потом самого родителя!!! |
Автор: Akina 26.4.2015, 21:47 |
Условие на значение. При его невыполнении в проведении операции с данными будет отказано. |
Автор: крылья 27.4.2015, 11:06 |
дело в том что у меня одна таблица, как бы мне не нужен внешний ключ у меня это в одной таблице выражена, структура иерархичная....ну типа у меня есть id поле и еще есть поле parent , так вот, полt parent хранит в себе значения id номера, ия я не могу удалить id если в поле parent имеется его значение |
Автор: Akina 27.4.2015, 11:19 |
Правильно. У тебя есть условие на значение - у записи должен быть родитель, или там должно быть NULL (родителя нет, запись является корнем). Поэтому операция удаления родителя не может быть выполнена, пока у него есть хоть один потомок - следует всех потомков или удалить, или приписать к другим родителям, или сделать корневыми, и только потом удалять. Добавлено через 1 минуту и 15 секунд Так что внешний ключ - нужен. PS. Внешний - это не означает, что строго на другую таблицу. Можно и на себя - но всегда на другой индекс. |
Автор: Zloxa 27.4.2015, 11:37 | ||
PS. Если из таблицы предполагается возможность удаления, parent_id было бы неплохо индексировать. |