|
Модераторы: LSD |
|
крылья |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 24.3.2015 Репутация: нет Всего: нет |
ребят объясните очень простым понятным языком что такое constraint, для чего он нужен, что он делает, желательно на примере с пояснением............
у меня есть первичное поле id и к нему привязаны записи parent, моя таблица имеет иерархичную структуру, дело в том что если я удалю любое id поле то привязанные записи потеряются, ну тупо память засорять будут, мне нужно сделать ограничение чтобы для начало нужно было удалить все привязанные записи а потом самого родителя!!! |
|||
|
||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
О. И объяснять ничего не надо именно эту функцию и выполняет foreign key constraint (ограничение внешнего ключа) -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 453 |
Условие на значение. При его невыполнении в проведении операции с данными будет отказано. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
крылья |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 24.3.2015 Репутация: нет Всего: нет |
дело в том что у меня одна таблица, как бы мне не нужен внешний ключ
у меня это в одной таблице выражена, структура иерархичная....ну типа у меня есть id поле и еще есть поле parent , так вот, полt parent хранит в себе значения id номера, ия я не могу удалить id если в поле parent имеется его значение |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 453 |
Правильно. У тебя есть условие на значение - у записи должен быть родитель, или там должно быть NULL (родителя нет, запись является корнем). Поэтому операция удаления родителя не может быть выполнена, пока у него есть хоть один потомок - следует всех потомков или удалить, или приписать к другим родителям, или сделать корневыми, и только потом удалять.
Добавлено через 1 минуту и 15 секунд Так что внешний ключ - нужен. PS. Внешний - это не означает, что строго на другую таблицу. Можно и на себя - но всегда на другой индекс. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
PS. Если из таблицы предполагается возможность удаления, parent_id было бы неплохо индексировать. Это сообщение отредактировал(а) Zloxa - 27.4.2015, 12:22 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
Правила форума "Oracle" | |
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Oracle | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |