![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Update [D6, IB6.x]
Ш-К © (2002-06-18 09:33:00)Имеется таблица, в ней около 100 столбцов. Как мне определить в теле триггера на after update какая ячейка и в какой из строк модифицировалась.
Desdechado (2002-06-18 11:20:00) [1]увы :(
Ш-К (2002-06-18 11:15:00) [2]Теперь вопрос в догонку.
Тело триггера, что-то типа:
if (new.field1<>old.field1) then SP1(new.id);
if (new.field2<>old.field2) then SP2(new.id);
if (new.field3<>old.field3) then SP3(new.id);
if (new.field4<>old.field4) then SP4(new.id);
if (new.field5<>old.field5) then SP5(new.id);
........
if (new.fieldN<>old.fieldN) then SPN(new.id);
Т.е. имеется закономерность в названии полей и закономерность в названии ХП.
Можно ли это дело как-нить оптимизировать? Скажем, в цикле.
Ш-К (2002-06-18 11:07:00) [3]Да, что-то я лоханулся.
СЕНКС.
Alexandr (2002-06-18 11:03:00) [4]old.keyField
или оно же
new.keyField
Ш-К (2002-06-18 10:59:00) [5]Не вьехал.
Допустим таблица имеет поля: keyfild - integer и notkeyfild - float.
В записи с keyfild=51 меняем поле notkeyfild. (из клиента)
Теперь как в триггере before Update определить, что keyfild=51. Это значение нужно передать в ХП.
Alexandr (2002-06-18 10:47:00) [6]дык триггер и сработает на "строке которая изменилась", ну хочешь заведи еще одно поле, в которое этим же триггером пиши дату изменения.
P.S. а триггер должен быть before Update
Ш-К (2002-06-18 10:40:00) [7]Таблица меняется - хочу определить строку по ключевому полю, которая изменилась.
Alexandr (2002-06-18 10:38:00) [8]какой строкой?
Ш-К (2002-06-18 10:32:00) [9]Ну хорошо, я могу написать для каждого столбца проверку, тем более, что обработка для каждого разная.
А как быть со строкой?
Desdechado (2002-06-18 10:30:00) [10]будет больше колонок, будет больше 100 раз :)
по-другому никак
Alexandr (2002-06-18 10:28:00) [11]конечно.
Чудес-то не бывает
Ш-К (2002-06-18 10:21:00) [12]2 Alexandr © (18.06.02 10:19)
И так 100 раз?
Alexandr (2002-06-18 10:19:00) [13]if (new.fieldName<>old.fieldname) then
Ш-К (2002-06-18 10:16:00) [14]Просто имеется структура 100х100 (представляю её таблицей). И мне надо определить в триггере (желательно в триггере), какая ячейка модифицировалась.
И как через New.<имя столбца>, OLD.<имя столбца>?
Mike_Goblin (2002-06-18 09:46:00) [15]Триггер, насколько мне помнится, вызывается для каждой строки
Для столбцов есть конструкция New.<имя столбца>, OLD.<имя столбца>, содержащие старые и новые значения
PS. 100 столбцов - это что же такое там хранится