powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Есть ли ограничения в RI
8 сообщений из 8, страница 1 из 1
Есть ли ограничения в RI
    #37966254
UAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа!

Корректно ли использовать RI в таких двух случаях:

- Таблица с ЧЕТЫРЬМЯ индексами типа REGULAR, ее записи ссылаются на ЧЕТЫРЕ материнские таблицы
- Таблица имеет ТРИ дочерние таблицы

Отмечу, что когда в открытой базе данных запускаю RI, в его таблице присутствуют ВСЕ пары родительских и дочерних таблиц, везде, где нужно я выбираю КАСКАД на удаление, но при тестировании НЕ везде работает каскадное удаление.
Иногда, те записи в дочерних таблицах, которые должны быть удалены, не помечены как удаленные.

Помогите разобраться.
...
Рейтинг: 0 / 0
Есть ли ограничения в RI
    #37966718
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UAP,

Не удалось повторить. :( Все работает. Может, неправильно понял?
"Кабы схемку аль чертеж - мы б затеяли вертеж..." (с)
...
Рейтинг: 0 / 0
Есть ли ограничения в RI
    #37967184
UAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Jonny540!

Я тоже на "модели" получаю правильные результаты.

Хотелось бы увидеть ФОРМАЛЬНОЕ описание условий работы RI, чтобы найти проблему в реальной задаче, которая очень закручена.

Вероятно, я нарушаю некоторые требования к состоянию таблиц, участвующих в RI.

Может быть RI может работать на определенную глубину родитель-ребенок, либо ограничение на количество связей с другими таблицами, либо ограничение на количество индексов в таблице и т.д.
...
Рейтинг: 0 / 0
Есть ли ограничения в RI
    #37967957
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откройте хранимые процедуры и изучайте триггера. В чем проблема-то.

У RI как таковой нет специальных ограничений. Это же просто построитель хранимых процедур для организации определенного типа ссылочной целостности. Причем механизм далеко НЕ универсальный. Ограничения есть у собственно FoxPro. Например, запрет на рекурсивный вызов триггера. Если у Вас получилась древовидная структура, то удалить всю иерархию через RI - не получится. Хотя собственный триггер вне рамок RI для этого написать можно

А если задача "закручена", то изучайте как у Вас там обстоят дела с транзакцией и буферизацией. Может, триггера-то срабатывают как надо, да только у Вас либо буфер какой сбрасывается позже, либо откат транзакции происходит. Может Вы просто подавили сообщение об ошибке.

Кстати, если Вы не в курсе, то RI в процессе своей работы создает глобальный массив gaErrors(). Если в результате работы триггера происходит ошибка, то в этот массив записывается причина ошибки. Посмотрите, не записалось ли ту чего в тех случаях, когда у Вас не все удалилось
...
Рейтинг: 0 / 0
Есть ли ограничения в RI
    #37968025
UAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый ВладимирМ!

Пожалуйста, объясните о какой древовидной структуре, где RI может не работать, Вы говорите.
...
Рейтинг: 0 / 0
Есть ли ограничения в RI
    #37968404
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Классический" способ хранения древовидной иерархии. Одна и та же таблица с двумя полями: ID - код записи, ParentID - ссылка на "родителя" (запись этой же таблицы). Так вот, построить RI между этими полями можно, но каскадное удаление работать будет только для одного уровня. При количестве уровней больше одного произойдет рекурсивный вызов (вызов триггера изнутри самого себя), что запрещено в VFP
...
Рейтинг: 0 / 0
Есть ли ограничения в RI
    #37969001
UAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый ВладимирМ!

В моем случае, материнские и дочерние записи принадлежат РАЗНЫМ таблицам, САМОССЫЛОЧНОСТИ нет.

Не знаю почему, но сайт sql.ru, в последнее время, часто невозможно открыть.

Когда такое случается я расстаиваюсь, поскольку ощущаю очень большую пользу для себя от форума.
...
Рейтинг: 0 / 0
Есть ли ограничения в RI
    #37969070
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я упомянул классическую древовидную иерархию, только как иллюстрацию того факта, что использование триггеров вообще (и RI как частный случай триггеров) имеет свои ограничения. Что именно накручено в Вашем приложении - не известно. Вы ведь сами не понимаете, что у Вас там творится. Так что, тут Вам никто не поможет. Ищите ошибку сами.

Как я уже говорил, скорее всего, Вы где-то просто подавляете сообщение об ошибке. Т.е. FoxPro Вам говорит, что вот этого он сделать не может, но Вы от его слов "отмахиваетесь".

Кроме того, Вы упомянули только о триггерах на удаление, но ничего не сказали о триггерах на вставку/модификацию. Может, у Вас после удаление просто создаются новые или изменяются существующие записи. Вот Вам и кажется, что не все удалилось.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Есть ли ограничения в RI
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]