Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: CL | DM;

Вниз

Проблема с триггером   Найти похожие ветки 

 
AUS_r4nd0m ©   (2004-11-03 20:55) [0]

Привет, Мастера. У меня такая проблема: надо создать триггер, который записывает в поле ID (первичный ключ) уникальное значение с помощью генератора.
Вот запрос на создание:
CREATE TRIGGER TR_ID_Str FOR Strana
ACTIVE
BEFORE INSERT
AS
 BEGIN
  ID_Str=GEN_ID(Gen_Str,1)
 END


Ошибка:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 7, char 1
END
Statement: CREATE TRIGGER TR_ID_Str FOR Strana
ACTIVE
BEFORE INSERT
AS
BEGIN
 ID_Str=GEN_ID(Gen_Str,1)
END


 
AUS_r4nd0m ©   (2004-11-03 20:56) [1]

Что в этом коде не так ???
Заранее спасибо...


 
Vlad ©   (2004-11-03 21:05) [2]

точку с запятой забыл в конце предложения


 
Vlad ©   (2004-11-03 21:08) [3]

CREATE TRIGGER TBI_CLIENTS FOR CLIENTS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
 NEW.CLIENT_ID = GEN_ID(NEWCLIENT, 1);
END


 
AUS_r4nd0m ©   (2004-11-03 21:30) [4]

CREATE TRIGGER TR_ID_Str FOR Strana
ACTIVE
BEFORE INSERT POSITION 0
AS
 BEGIN
  New.ID_Str=GEN_ID(Gen_Str,1);
 END


Теперь вот что пишет:
Dynamic SQL Error
SQL error code = -104
Unexpected end of command


 
Vlad ©   (2004-11-03 21:40) [5]

навскидку все вроде верно, хотя почитай еще вот это:
http://www.ibase.ru/devinfo/generator.htm#using


 
AUS_r4nd0m ©   (2004-11-03 21:48) [6]

А если в запросах из клиентского приложения вызывать генератор, тоже самое ведь получится? Странно все это, вроде до этого делал работало....


 
Johnmen ©   (2004-11-03 22:09) [7]

>AUS_r4nd0m ©  (03.11.04 21:30) [4]

Откуда выполняется сиё ?


 
AUS_r4nd0m ©   (2004-11-03 22:10) [8]

> Johnmen
IBConsole


 
AUS_r4nd0m ©   (2004-11-03 22:13) [9]

Вот моя ася стучитесь 309462263, иначе это будет долго...


 
Johnmen ©   (2004-11-03 22:20) [10]

У меня нет аси. И не будет :)

SET TERM ^ ;

CREATE TRIGGER TR_ID_Str FOR Strana
ACTIVE
BEFORE INSERT POSITION 0
AS
BEGIN
New.ID_Str=GEN_ID(Gen_Str,1);
END ^

SET TERM ; ^

СтОит хелпы почитать...:)


 
AUS_r4nd0m ©   (2004-11-03 22:32) [11]

Спасибо, работает. А что такое SET TERM ^ ;?


 
Johnmen ©   (2004-11-03 22:59) [12]

Изменю себе и не буду посылать в хелп...:)
ИБКонсоль, как и другие аналогичные штуки, позволяет выполнять ряд последовательно написанных запросов (скрипт), которые отделяются ;
А у тебя идет создание триггера с его телом - содержимое его есть программа на процедурном языке. В котором языковые конструкции ("команды") также отделяются ;
Интерпритатор должен отличить эти, по сути разные, ; ?
Должен.
Для это сущ-ет опция команды SET под назв. TERM, которая говорит, что "дальше интерпритируем знак x как знак у, SET TERM x y".

Ну дальше понятно, надеюсь...:)


 
Johnmen ©   (2004-11-03 23:26) [13]

>Johnmen ©  (03.11.04 22:59) [12]

У тебя, дружок, ошибочка. ИНТЕРПРЕТАЦИЯ.
:)))


 
AUS_r4nd0m ©   (2004-11-04 00:44) [14]

Спасибо за объяснение. Теперь буду знать


 
Deniz ©   (2004-11-04 06:31) [15]

...
BEGIN
if (NEW.ID_Str is null) then <------ добавить
 New.ID_Str=GEN_ID(Gen_Str,1);
END



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

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

Наверх




Память: 0.5 MB
Время: 0.046 c
1-1100860387
TankMan
2004-11-19 13:33
2004.12.05
Как запускать с параметрами так это легко, а как возвращать...


1-1099753589
N@St
2004-11-06 18:06
2004.12.05
RTF <---> HTML


14-1100598171
Ricko
2004-11-16 12:42
2004.12.05
В поисках идеального органайзера.


1-1101197302
denis24
2004-11-23 11:08
2004.12.05
for i:=0 to ScrollBox1.ControlCount-1


14-1100517038
помаранчевий Жук
2004-11-15 14:10
2004.12.05
Искусство наследует жизнь или наоборот?