AnryGTR писал(а):...нельзя ли мини триггер написать как он это делать будет...?
Пример
тела простейшего триггера на AFTER UPDATE для таблицы товаров (ITEMS):
Код: Выделить всё
if (new.PRICE <> old.PRICE) then begin
-- Закрываем старую цену
update PRICES set DATE_MAX = current_date
where ITEM = new.ID and DATE_MAX is null;
-- Открываем новую цену
insert into ITEMS (ITEM, PRICE, DATE_MIN)
values (new.ID, new.PRICE, current_date);
end
где ITEMS - таблица товаров с уникальным полем ID; PRICES - таблица цен со ссылкой на товар ITEM (ID в ITEMS).
AnryGTR писал(а):Кстати, а насчёт лукапов - это правда ?
А то они у меня сплошь и рядом, может действительно забить на них и делать всё через Селект?
Всё зависит от ситуации.
Чтобы правильно отобразиться, лукап-поле
полностью прочитывает лукап-датасет, что напрягает излишне сервер и сетку, и забирает память на клиенте под хранение, что далеко не всегда необходимо. Кроме того, если данных в датасетах лукапа много, то чтобы отобразить их, лукап-поле для каждой записи твоей выборки проводит поиск нужной записи в лукап-датасете, напрягая клиентский комп.
Если это
маленький статичный справочник с одним информационным полем (например, типы документов), одинаковый для всех записей выборки, то использование лукапа удобно.
В остальных случаях я добавляю в колонку кнопку вызова полноценной формы соответствущего справочника, где и поля все есть, и поиск можно организовать и фильтрацию, и сортировку и добавление новых элементов, и вообще всё, что душе угодно

. И вызывается только при необходимости внести изменения. Тем более, обычно, это та же форма, что и для редактирования справочника.