powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ошибка в триггере
11 сообщений из 11, страница 1 из 1
ошибка в триггере
    #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
ошибка в триггере
    #32518474
vovan1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в BEFORE_INSERT не существует OLD, есть только NEW.
В твоем случае:

if (new.person_id IS NULL) then new.person_id = gen_id(person_generator,1);
...
Рейтинг: 0 / 0
ошибка в триггере
    #32518514
woodoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, но суть не в том.
я хотел чтоби при inserte в таблицу person_id=0
генерился новый id
а при инсерте конкретного person_id не генерился, соответсвенно.
интересно было бы увидеть предложения по решения именно этой задачи
...
Рейтинг: 0 / 0
ошибка в триггере
    #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
ошибка в триггере
    #32518584
woodoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, но я забыл сказать, что person_id являетс primary key и упминается еще во многих других таблицах, то есть NULL-ом при инсерте быть не может(по крайней мере я так понимаю)
...
Рейтинг: 0 / 0
ошибка в триггере
    #32518686
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы просто попробуйте.

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

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

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

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


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