![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с примером триггера [D6, IB6.x]
Senka © (2002-11-28 11:20:00)Люди добрые....
Как сделать так чтобы например при добавлении новой записи в таблицу поле первичного ключа автоматически заносилось увеличиваясь на единицу.
Вот пример но он чегото не работает:
CREATE GENERATOR "TEHNIKA_GEN";
SET TERM ^ ;
CREATE TRIGGER "SETTEHN" FOR "TEHNIKA"
ACTIVE BEFORE INSERT POSITION 0
as
begin
new.N_TEH = gen_ID(TEHNIKA_Gen, 1);
end ^
COMMIT WORK ^
SET TERM ;^
Спасиба.
Wolf226 (2002-11-29 11:09:00) [1]Тригер правильный, похоже проблема в другом.
Например в самой программе.
Поле первичного ключа not null.
поэтому Delphi по умолчанию ставит Required:=true;
И если ты его не заполнишь, то он не выполнит Post
Поэтому надо явно определить поля. И поставить Required:=false
для поля N_TEH.
Alexandr (2002-11-29 07:44:00) [2]да не слушай ты тут всякий бред.
У тебя же откомпилировался триггер.
А с чего ты взял, что не заботает?
Senka (2002-11-28 17:34:00) [3]Если сделать так
new.N_TEH = gen_ID(TEHNIKA_Gen, 1)^
то ерор вылазит и не компилит.
Andriano (2002-11-28 14:22:00) [4]new.N_TEH = gen_ID(TEHNIKA_Gen, 1) ^
Andriano (2002-11-28 14:21:00) [5]new.N_TEH = gen_ID(TEHNIKA_Gen, 1) ^
Alexandr (2002-11-28 13:51:00) [6]да правильный триггер. Должен работать.
Другое дело, что ты у себя в дадасете значения не видишь... Пока запрос не переоткроешь. Так это уже другая проблема.
Senka (2002-11-28 13:43:00) [7]Дело не в кавычках. Их уже генерит сам интербейз я взял код уже скомпилированный.
А пример подобный у кого нибудь есть. И что это :new.N -поставить двоеточие перед new.
Alexandr (2002-11-28 11:30:00) [8]нет. Это от третьего диалекта.
Стандарт SQL-92 в отношении кавычек почитай.
stone (2002-11-28 11:23:00) [9]Давно уже не работал с интербэйзом, но по-моему тут кавычки везде лишние.
Johnmen (2002-11-28 11:21:00) [10]:new.N