Главная страница
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.015 c
14-61814
Burmistroff
2002-11-28 00:43
2002.12.19
ОСи


1-61583
v-o-y-a-g-e-r
2002-12-09 13:42
2002.12.19
Возможно ли при создании потока(нити) передать в него функцию


1-61600
b-Ars
2002-12-09 12:59
2002.12.19
Предварительный просмотр у TChart


4-61888
mba
2002-11-06 09:51
2002.12.19
Сообщения TEdit


8-61715
Fletch
2002-09-04 15:58
2002.12.19
Как пустить на печать канву например PaintBox-а?