![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с триггером [D7, IB6.x]
AUS_r4nd0m © (2004-11-03 20:55:00)Привет, Мастера. У меня такая проблема: надо создать триггер, который записывает в поле 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
Deniz (2004-11-04 06:31:00) [1]...
BEGIN
if (NEW.ID_Str is null) then <------ добавить
New.ID_Str=GEN_ID(Gen_Str,1);
END
AUS_r4nd0m (2004-11-04 00:44:00) [2]Спасибо за объяснение. Теперь буду знать
Johnmen (2004-11-03 23:26:00) [3]>Johnmen © (03.11.04 22:59) [12]
У тебя, дружок, ошибочка. ИНТЕРПР ЕТАЦИЯ.
:)))
Johnmen (2004-11-03 22:59:00) [4]Изменю себе и не буду посылать в хелп...:)
ИБКонсоль, как и другие аналогичные штуки, позволяет выполнять ряд последовательно написанных запросов (скрипт), которые отделяются ;
А у тебя идет создание триггера с его телом - содержимое его есть программа на процедурном языке. В котором языковые конструкции ("команды") также отделяются ;
Интерпритатор должен отличить эти, по сути разные, ;?
Должен.
Для это сущ-ет опция команды SET под назв. TERM, которая говорит, что "дальше интерпритируем знак xкак знак у, SET TERM x y".
Ну дальше понятно, надеюсь...:)
AUS_r4nd0m (2004-11-03 22:32:00) [5]Спасибо, работает. А что такое SET TERM ^ ;?
Johnmen (2004-11-03 22:20:00) [6]У меня нет аси. И не будет :)
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:13:00) [7]Вот моя ася стучитесь 309462263, иначе это будет долго...
AUS_r4nd0m (2004-11-03 22:10:00) [8]> Johnmen
IBConsole
Johnmen (2004-11-03 22:09:00) [9]>AUS_r4nd0m © (03.11.04 21:30) [4]
Откуда выполняется сиё ?
AUS_r4nd0m (2004-11-03 21:48:00) [10]А если в запросах из клиентского приложения вызывать генератор, тоже самое ведь получится? Странно все это, вроде до этого делал работало....
Vlad (2004-11-03 21:40:00) [11]навскидку все вроде верно, хотя почитай еще вот это:
http://www.ibase.ru/devinfo/generator.htm#using
AUS_r4nd0m (2004-11-03 21:30:00) [12]
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:08:00) [13]CREATE TRIGGER TBI_CLIENTS FOR CLIENTS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.CLIENT_ID = GEN_ID(NEWCLIENT, 1);
END
Vlad (2004-11-03 21:05:00) [14]точку с запятой забыл в конце предложения
AUS_r4nd0m (2004-11-03 20:56:00) [15]Что в этом коде не так ???
Заранее спасибо...