Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.46 MB
Время: 0.01 c
14-61800
Mic_2000
2002-11-28 18:31
2002.12.19
Где можно взять полную весию EhLib?


8-61709
Porolonchick
2002-09-04 20:00
2002.12.19
Воспроизведение звуков


3-61442
Sergh_Bear
2002-11-29 14:48
2002.12.19
Использование html файлов в БД


1-61516
stub
2002-12-09 08:49
2002.12.19
у кого есть примеры создания граф. движка рисования схем сетей?


3-61465
genie
2002-12-01 16:47
2002.12.19
Invalid variant type conversion ??? :`-(





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский