Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вставка записи в таблицу [D7, IB6.x]


oradb ©   (2005-09-05 13:33:00) 

Есть таблица и генератор. Есть триггер на таблице 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), то есть, такое ощущение, что не срабатывает триггер.

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


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

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


Zacho   (2005-09-05 14:34:00) [2]

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

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


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

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


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

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


Anatoly Podgoretsky   (2005-09-05 14:21:00) [5]

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

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


Zacho   (2005-09-05 14:07:00) [6]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо