Форум: "Базы";
Текущий архив: 2002.12.19;
Скачать: [xml.tar.bz2];
ВнизReferential Integrity Найти похожие ветки
← →
SiJack (2002-11-29 09:33) [0]В документации написано что используя Referential Integrity можно создать две таблицы причем если удалить запись в главной то в подчененой автоматически удалятся записи связанные с этой записью. Но на проктике чегото не выходит может есть какой то секрет? Очень хочется узнать его!! Заранее спасибо!
(свойство Cascade устанавливал)
← →
Карелин Артем (2002-11-29 11:50) [1]Другой классик не рекомендует устанавливать Referential Integrity на уровне базы, а рекомендует делать это на уровне приложения.
← →
MsGuns (2002-11-29 12:07) [2]Согласен с Артемом. Полагаться на DBD в плане лог.связей между таблицами не советую никому.
← →
ЮЮ (2002-11-29 12:20) [3]>Полагаться на DBD в плане лог.связей между таблицами не советую никому.
А может это инструмент непосредственно DBD? Никто не пробовал? Сам то он поддерживает своё каскадное удаление? Если да, то остаётся дать пользователю DBD в качестве инструмента и не париться с разработкой своей программы :-)
← →
ScareCrow (2002-11-29 13:18) [4]В свое время, в одной книге по DELPHI прочитал, что каскадное удаление поддерживается только в среде PARADOX, так что не ломайте себе голову: используя в качестве инструмента программирования DELPHI, каскадное удаление осуществляйте на уровне приложения. Если у Вас, например, отношение между двумя таблицами OneToMany ( Master.db->OneToMany-> Detail.db), то прежде чем удалить запись в Master.db удалите соответсвующие записи в Detail.db. Логично использовать для этой операции компонент класса TUpdateSQL :
Master.db
Master_id + *
Master_Info A 10
Detail.db
Detail_id + *
Master_id I < Define RefIntegrity:
reference on Master.Master_id >
Detail_Info A 15
Delete
From
"Detail.db"
Where
Master_id=:Master_ID
Либо используйте TBatchMove.
Само по себе использование RefIntegrity очень даже хорошая вещь, в смысле защиты от непреднамеренного удаления и, собственно, целостности данных.
Если вы используете каскадное обновление, то в Master.db
Primary Key Field не рекомендуется делать типа AutoInc(+)...
← →
REP (2002-11-29 13:58) [5]ScareCrow (29.11.02 13:18)
>Если вы используете каскадное обновление, то в Master.db
>Primary Key Field не рекомендуется делать типа AutoInc(+)...
Почему?
← →
ScareCrow (2002-11-29 14:44) [6]Потому, что иногда, надо менять (редактировать) значение ключа в Master.db : если его тип AutoInc(+), то Вы не сможете этого сделать. Нпример было 44, а вы хотите его поменять на 48 (Master.Master_id=48 нет в таблице Master.db "в природе" на тек. момент). А если тип Master.Master_id, например I, то пож.:
делаете Master.Master_id:=48 и в Detail Detail.Master_id=48
становится "автоматом" (по крайней мере, в DBD).
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.12.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c