Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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 столбцов - это что же такое там хранится


Наверх

Титульная страница Поиск, карта сайта Написать письмо