![]() |
Модераторы: Akella |
![]() ![]() ![]() |
|
Alam |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 28.12.2005 Репутация: нет Всего: нет |
Имеются две таблицы:
I. Таблица с большим кол-вом полей (не важно сколько и какие). II. Таблица из 4-х полей: 1 - UnKey (Уникальный ключ из первой таблицы), 2 - FieldName (Имя поля из первой таблицы) 3. OldVal (предыдущее значение поля) 4. NewVal (новое значение поля). Задача следующая: При изменении записи первой таблицы во вторую должны внестись соответствующие записи об изменении того или иного поля. В тригере BeforUpDate первой таблиы организован цикл перебора всех полей. Наименования полей получаем из системных таблиц. Вопрос: Как получить значение New и Old наименованию поля, полученному из истемной таблицы? |
|||
|
||||
TheCetus |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 9.3.2006 Репутация: нет Всего: 2 |
Используй контекстные переменные
пример использования
Добавлено @ 17:28 упс ошибочка вышла с табличокй... вставляю чистым текстом
|
||||||
|
|||||||
Alam |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 28.12.2005 Репутация: нет Всего: нет |
Да мне так и приходиться выкручиваться. Но в таблице около ста полей (и таблица не одна) и тригер получается амбарный и если добавлять поля в таблицу приходиться добписывать и тригер под эти поля. Было бы идеально если перебратьв цикле все поля таблицы получая их наименования из ситемных полей и на каждом шаге сравнивать значения New и Old. Проблема в получении этих значений по наименованию полей. Хочу что то типа как в Delphi - Table.FieldByName('FieldName'). Если это не возможно скажите - не буду
![]() |
|||
|
||||
Linco |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.2.2006 Репутация: нет Всего: нет |
Невозможно, пока. Ибо по ресурсам нехорошо, и легче написать свой генератор триггеров либо воспользоваться интерфейсом от сторонних производителей (IBExpert)
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
ничего страшного, у меня не 100, конечно, но 50 было, зато 1 раз сделал и порядок, я думаю, что можно ещё и оргинизовать цикл по записям системных таблиц, где хранятся имена таблиц и полей. Тебе нужно найти только как называются системные таблицы. IBExpert тебе в руки. |
|||
|
||||
vv3 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 29.4.2006 Репутация: нет Всего: нет |
Вот эскиз штуки, которая тебе может помочь - генерирует триггер автоматически при добавлении поля в таблицу. Разумеется LOG_таблицы должны быть созданы предварительно.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Interbase" | |
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |