:: Visual Foxpro, Foxpro for DOS
Начали портиться индексы
ZenTigra
Автор

Сообщений: 514
Дата регистрации: 03.12.2004
Помогите...

Попробовал перенести некоторую логику в triggers. Опыта маловато, где лежат грабли еще не знаю.
Но на мой взгляд, в самом коде, ничего опасного нет. Но в одного клиента, через неделю, после установки новой версии начались проблемы с индексами. Они рушатся, то есть пропадают записи в индексе, в таблице запись есть, в индексе нет, после переиндесации все норм, но ненадолго.

Windows 7 корпоративная, ломаная, чтоб была возможность работы нескольких пользователей через RDP, вернее через RemoteApp. Как бы и сеть здесь не причем.

До недавнего времени все работало нормально, я пока грешу из-за Triggers (что-то я там недопонимаю).

Приведу простенький пример. Есть две таблицы.
Table1 и Table2 (связанных по полю key <-> key2)

table1
Key
sum

table2
key
key2
sum

При изменении в таблице table2 запускается SQL запрос который суммирует поле sum,

SELECT table2
t_key2=table2.key2
SELECT table2.key, table2.key2, SUM(table2.sum) AS sum;
FROM table2;
WHERE table2.key2 = t_key2;
INTO CURSOR SQL_table2
T_sum=SQL_table2.sum
SELECT table1
REPLACE table1.sum WITH T_sum

Это упрощенный пример, нету проверок и т.п.
Изменений в table2 нету (та и не даст там ничего сделать в table2)
Так вот, индекс теряется в table2.

PS.Пока буду возвращать все по старому, логику перенесу вновь в программу, но как то странно...
Ratings: 0 negative/0 positive
Re: Начали портиться индексы
sphinx

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
ZenTigra
я пока грешу из-за Triggers

Как нам узнать, что прописано в Triggers? Это очень большой секрет?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Начали портиться индексы
sphinx

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
А можно что-то упростить и сюда выложить?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Начали портиться индексы
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
Для начала надо бы переписать запрос на

SELECT SUM(table2.sum) AS sum;
FROM table2 WITH (Buffering = .t.);
WHERE table2.key2 = t_key2;
INTO CURSOR SQL_table2 NoFilter

1. table2.key, table2.key2 - тут не нужны, либо надо добавить Group By, что бы не потерять table2.key2 по которому обновляется Table1

2. Добавить WITH (Buffering = .t.)

3. Заставить фокс создать курсор NoFilter


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 20 (Гостей: 20)

© 2000-2024 Fox Club 
Яндекс.Метрика