Вниз
Скачать: CL | DM;

Вставка записи в таблицу   Найти похожие ветки 

 
oradb   (2005-09-05 13:33) [0]

Есть таблица и генератор. Есть триггер на таблице BEFORE INSERT:


AS
begin
 NEW.id = GEN_ID(productgroupgen, 1);
end


 Если вставлять в таблицу запись через Query (insert into table(name) values("test")) - то все проходит нормально.  Если я вставляю запись с помощью Table:


 table.Active:=true;
 table.Insert;
 table.FieldByName("name").AsString:=NameEdit.Text;
 table.Post;


 то появляется сообщение о том, что не задано ключевое поле(id), то есть, такое ощущение, что не срабатывает триггер.

 Почему так происходит и как этого избежать ?


 
Zacho ©   (2005-09-05 14:07) [1]

Читать http://www.ibase.ru/devinfo/generator.htm


 
Anatoly Podgoretsky ©   (2005-09-05 14:21) [2]

Так оно и есть, триггера срабатываю после проверки ограничений, а у тебя явно обязательное поле NOT NULL
А так ка ИБ не поддерживает автоинкриментных полей, то Дельфи не знает, что это автоинкриментное поле и пытается послать туда NULL.

А что тебя довело до жизни такой, как использование Table, возможно еще и БДЕ


 
oradb   (2005-09-05 14:28) [3]

Прошу прощения за неточность - использую TIBTable.
 Пока вижу такое решение - отдельной query получаю идентификатор, а потом использую TIBTable и полученный идентификатор.


 
Os   (2005-09-05 14:29) [4]

AS
BEGIN
 IF (NEW.ID IS NULL) THEN
   NEW.ID = GEN_ID(productgroupgen,1);
END


 
Zacho ©   (2005-09-05 14:34) [5]

Anatoly Podgoretsky ©   (05.09.05 14:21) [2]

Неверно. Триггер BEFORE срабатывает перед проверкой на NULL. А сообщение об ошибке выдаёт не IB, а Дельфи, поскольку у соответствующего поля Required:=true;


 
Os   (2005-09-05 14:44) [6]

Тригер привязан к таблице в базе и срабатывает перед вставкой данных



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.036 c
1-1127739413
MakedoneZ
2005-09-26 16:56
2005.10.16
Работа с реестром,запуск проги при старте OC


2-1125919973
kblc
2005-09-05 15:32
2005.10.16
Exception


14-1127128986
infom
2005-09-19 15:23
2005.10.16
Оцените программку "Мастерская" пожалуйста


3-1125579072
Андрей Жук
2005-09-01 16:51
2005.10.16
Индексы по выражениям в Firebird


3-1125682555
suharew
2005-09-02 21:35
2005.10.16
Поиск записи.




   Наверх