Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.19;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
3-61438
pavelsinicinV
2002-11-29 22:01
2002.12.19
InterBase


14-61753
Its'me
2002-11-26 18:02
2002.12.19
Как определить пересекаются ли прямоугольник и круг ?


4-61890
Xemax
2002-11-02 15:31
2002.12.19
Время задавать ОЧЕНЬ СЛОЖНЫЕ ВОПРОСЫ !!!!


3-61453
SerGol
2002-11-30 17:47
2002.12.19
ADO, THREADS & BPL


6-61729
Юрий
2002-10-24 05:31
2002.12.19
TClientSocket в компоненте