Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ошибка в триггере / 11 сообщений из 11, страница 1 из 1
14.05.2004, 15:43:17
    #32518441
woodoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в триггере
ALTER TRIGGER PERSON_BI0
ACTIVE AFTER INSERT POSITION 0
AS
begin
if (old.person_id = 0) then
begin
new.person_id = gen_id(person_generator,1);
end
/* Trigger text */
end

ERROR


Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
OLD.PERSON_ID.


в чем ошибка??
...
Рейтинг: 0 / 0
14.05.2004, 15:50:50
    #32518474
vovan1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в триггере
в BEFORE_INSERT не существует OLD, есть только NEW.
В твоем случае:

if (new.person_id IS NULL) then new.person_id = gen_id(person_generator,1);
...
Рейтинг: 0 / 0
14.05.2004, 16:01:52
    #32518514
woodoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в триггере
спасибо, но суть не в том.
я хотел чтоби при inserte в таблицу person_id=0
генерился новый id
а при инсерте конкретного person_id не генерился, соответсвенно.
интересно было бы увидеть предложения по решения именно этой задачи
...
Рейтинг: 0 / 0
14.05.2004, 16:15:33
    #32518551
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в триггере
Код: plaintext
1.
2.
3.
if (new.person_id is null) then
begin
  new.person_id = gen_id(person_generator, 1 );
end

кажется, так надо

чтобы сгенерился, не упоминаете в инсерт (или устанавливаете в null)
чтобы вставился, упоминаете
...
Рейтинг: 0 / 0
14.05.2004, 16:25:38
    #32518584
woodoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в триггере
спасибо, но я забыл сказать, что person_id являетс primary key и упминается еще во многих других таблицах, то есть NULL-ом при инсерте быть не может(по крайней мере я так понимаю)
...
Рейтинг: 0 / 0
14.05.2004, 17:11:34
    #32518686
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в триггере
вы просто попробуйте.

перед (before, англ.) инсертом - может, соответсвенно триггер должен быть BEFORE INSERT
...
Рейтинг: 0 / 0
14.05.2004, 17:37:18
    #32518736
woodoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в триггере
странно, но в этот раз:

Field PERSON_ID should have a value
...
Рейтинг: 0 / 0
14.05.2004, 18:34:45
    #32518851
Володя Т.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в триггере
Какая версия IB (FB) ?
Должно работать - все так делаем :)

PS Это в MS SQL не будет работать - он почему-то сперва на NULL проверяет, а потом триггер запускает (ну что с него возьмёшь)
...
Рейтинг: 0 / 0
14.05.2004, 18:41:13
    #32518856
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в триггере
авторЭто в MS SQL не будет работать - он почему-то сперва на NULL проверяет
Насколько я помню у MS нет триггеров BEFORE - они все AFTER! Потому и не будет.
...
Рейтинг: 0 / 0
14.05.2004, 18:47:34
    #32518865
Володя Т.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в триггере
BEFORE конечно нету - я имел ввиду INSTEAD триггера. Они хоть и криво, но всё-таки могут выполнять роль BEFORE триггеров. Например следить за констрейнтами из INSTEAD триггера можно, а вот за NULL - увы! Это не Interbase :)
...
Рейтинг: 0 / 0
17.05.2004, 07:29:41
    #32519590
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка в триггере
woodoo , какими компонентами пользуешься?

В IBX (за fib+ не отвечаю) в свойствах поля указываешь AutoGenerateValue = arAutoInc и Required = False, создаешь на это поле триггер с генератором и всё "ок".
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ошибка в триггере / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]