Re[3]: Ошибка создания тригера в Interbase!
От: Пацак Россия  
Дата: 15.04.06 08:29
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Почему не работает автоиктремент??


Варианта два.

Первый Отключить в дельфийском компоненте доступа Required у поля ID_F. После чего передавать в него NULL, а в триггере обрабатывать, примерно так (не проверял, но на вид вроде оно)
SET TERM ^ ;
CREATE TRIGGER TTT FOR MYTABLE
ACTIVE BEFORE INSERT AS
BEGIN
  if (NEW.ID_F is NULL) 
    NEW.ID_F=GEN_ID(MY_GEN, 1);
END;
SET TERM ; ^

Плюс — меньше мороки
Минус — ключ будет получаться на сервере и клиенту придется рефрешить весь датасет чтоб обновить нужную запись.

Второй Получать ключ на клиента и задавать его руками через присвоение значения нужному TField. Получать — примерно так:
SELECT GEN_ID(MY_GEN, 1) as NEW_ID FROM RDB$DATABASE

Плюс — если компонент доступа это поддерживает, то при вставке будет рефрешиться только одна запись, та, для которой мы задали ID_F
Минус — руками надо писать немного больше.
Ку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.