Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: 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 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.059 c
14-1127409500
Мексиканец
2005-09-22 21:18
2005.10.16
Кино Митрофанова


5-1102767773
alo
2004-12-11 15:22
2005.10.16
как перенести свойство предка из published в public?


14-1126997219
P.N.P.
2005-09-18 02:46
2005.10.16
Смысл жизни


3-1125631152
DrAndrey
2005-09-02 07:19
2005.10.16
GETDATE() внутри User Defined Functions


14-1127425578
Eraser
2005-09-23 01:46
2005.10.16
Multicast