Здравствуйте, Аноним, Вы писали:
А>Почему не работает автоиктремент??
Варианта два.
Первый Отключить в дельфийском компоненте доступа 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
Минус — руками надо писать немного больше.