Ссылочная целостность в Фоксе | |
---|---|
Пашок Автор Сообщений: 706 Дата регистрации: 14.11.2001 |
Я последнее время больше на MS SQL пишу, но пришлость старый проект подправить.
Появилось 2 вопрос: Если установлен контроль ссылочной целостности между 2 таблицами, могу ли я вставлять значения null в child таблицу ? У меня не получилось, а в MS SQL получатся. Еще одна странность меня удивила, я в контейнера БД щелкнул по свзи между таблицами и удалил ее, а тригеры не удалились, это нормально ? ------------------ |
Re: Ссылочная целостность в Фоксе | |
---|---|
Пашок Автор Сообщений: 706 Дата регистрации: 14.11.2001 |
Пока разбирался, заметил еще, что возможна ситуация, когда хранимой процедуры _ri_update_nak нет, а они прописана в таблице когда делаешь ей MODIFY STRUCTURE, не могу понять, в каком порядке нужно производить все эти действия, с сылочной целостностью, чтобы все не разваливалось ?
------------------ |
Re: Ссылочная целостность в Фоксе | |
---|---|
amaximum Сообщений: 131 Откуда: Новороссийск, Красндарский край Дата регистрации: 26.04.2001 |
устанавливаешь связи, а потом database->edit referential integrity
|
Re: Ссылочная целостность в Фоксе | |
---|---|
Владимир Максимов Сообщений: 14095 Откуда: Москва Дата регистрации: 02.09.2000 |
Цитата:Если использовать "штатный" Referential Integrity, то нельзя. Надо писать триггера самостоятельно. На такой тип ссылочной целостности он не рассчитан. Цитата:Нормально. Постоянная связь - это шаблон. По которому может быть (а может и НЕ быть) создана Referetial Integrity. Но после создания Referential Integrity этот шаблон уже не нужен. А вообще-то, почитай здесь Раздел "Триггер", подраздел "Referential Integrity" www.foxclub.ru ------------------ |
Re: Ссылочная целостность в Фоксе | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, Владимир!
Цитата:Это в общем случае зависит от использованных триггеров. Для штатных триггеров, создаваемых RI Builder-ом действительно наличие связи не принципиально - ему нужны лишь индексы (по первичному и по внешнему ключам). Для других систем (в частности неплохая схема NewRI) они вполне могут быть нужны и на этапе работы триггера. ------------------ WBR, Igor |
Re: Ссылочная целостность в Фоксе | |
---|---|
Петров Андрей Сообщений: 2506 Откуда: Химки (М.О.) Дата регистрации: 17.04.2002 |
Я совсем в этом не разбираюсь но напишу свой вариант без всяких триггеров. Делаю связи в БД и дальше не навешиваю на них никаких триггеров. Далее при удалении записи вызываю вот эту процедуру
Для MS SQL Server
Для файл сервера
Достаточно просто. Может чем помог... ------------------ PS Недочитал тему до конца... |
Re: Ссылочная целостность в Фоксе | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, Андрей!
Теперь всё это дело запихиваем в триггер (чтоб не напрягать никого "вызовом" процедуры, и избежать всяких "забыл вызвать", "наплевал не запрет" и т.п.), чуть доводим код на предмет "самодостаточности", анализа "типов RI" и более полного восстановления среды (хотя это и не обязательно в некоторых случаях) и получаем нечто сильно напоминающее схему "универсальных триггеров" NewRI ------------------ WBR, Igor |
Re: Ссылочная целостность в Фоксе | |
---|---|
Петров Андрей Сообщений: 2506 Откуда: Химки (М.О.) Дата регистрации: 17.04.2002 |
Ну во первых для примера написал. Там еще приписка была сверху... PS Насчет меня не беспокойся я то не забуду у меня это все прописано можно сказать в классе...
А вот это уже интереснее. Зачем делать анализ видов связей (так понимаю их там всего 2 1_к_1 и 1_ко_Многим)? И чем мой код не самодостаточен? У меня с ним проблем никогда не было. Тьфу тьфу.
Потрудись пожалуйста объяснить что за анализ среды такой? Те что ты под этим понимаешь... Единственное что я там не сделал так это не восстановил положение курсора если файл был открыт (но мне это не нужно) и не восстановил положение в списке USE (непомню как там чего называется) Те не сделал sele (m.save_sele) Но это опять таки не принципиально. Потому что всегда вудфю sele перед там как начать работатьс таблицей...
Ты имеешь ввиду свою собственную систему чтоли под NewRI? Вместо стандартной... ------------------ PS Недочитал тему до конца... |
Re: Ссылочная целостность в Фоксе | |
---|---|
Combat Сообщений: 816 Откуда: Клайпеда Дата регистрации: 26.10.2000 |
В корне неверный подход (идеологически ) Триггер и должен быть тем самым "классом". Поддержание RI есть задача не каких-то пользовательских классов, а самой базы данных. Это же "начало начал" - так сказать ------------------ |
Re: Ссылочная целостность в Фоксе | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, Андрей!
1) Ну Combat правильно говорит насчёт того что RI это всё-же свойство данных, а не способа доступа к ним Т.е. не забудешь ты, забудет тот кто придёт за тобой, или просто будет параллельно работать с твоими данными. 2) Я не хочу вдаваться в детали того что есть "среда", и что там нужно, а что НЕ нужно восстанавливать. Просто с точки зрения триггера - восстанавливать надо всё - в т.ч. закрыть то что сам наоткрывал. 3) С каждой связью ассоциирован триплет "правил" - что делать при Update, что при Delete, что при Insert - запрещать, "каскадно" повторять... штатно только 3 типа действий возможны, хотя "в общем случае" их гораздо больше (и популярный кое где Nullify, и "связанный Insert", и особые типы RI для "классифицирующих" связей - ну да там общим шаблоном не отделаться уж ) 4) NewRI это не МОИ триггера - поищи на UT вроде было, или через Google - вот заголовок статьи: =========Beginning of the citation============== Enforcing Referential Integrity in Visual FoxPro 6.0 By Steve Sawyer, Director of Technology, Kirtland Associates The material in these notes are excerpted and adapted from Effective Techniques for Application Development (Hentzenwerke Publishing, 1998). Copyright (c) 1998 by Jim Booth and Steve Sawyer All Rights Reserved =========The end of the citation================ там есть и пример кода. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |