Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
ВнизКакие параметры указать в транзакции, если нужно Найти похожие ветки
← →
Тень отца Гамлета (2004-11-19 14:18) [0]Поле дочерней таблицы заполняется в зависимости от поля главной таблицы, которое генерируется триггером? После перезапроса главной таблицы все нормально, но если внести запись в главную таблицу, и попытаться добавить запись в дочернюю, то в некоторое поле попадет null - так как поле еще не сгенерировано триггером.
Компоненты FIBPlus 4.8
← →
HSolo © (2004-11-19 14:26) [1]Получайте значение поля на клиенте:
select gen_id(generator_name, 1) from rdb$database
а после этого вставляйте записи - и в главную таблицу, и в дочернюю.
А из триггера или уберите gen_id совсем, или напишите так:
if (new.id is null) then
new.id = gen_id(generator_name, 1);
← →
Тень отца Гамлета (2004-11-19 14:30) [2]Да не про генераторы вопрос...
← →
Sergey13 © (2004-11-19 14:31) [3][2] Тень отца Гамлета (19.11.04 14:30)
>Да не про генераторы вопрос...
Так и ответ то был не про них. 8-)
← →
Тень отца Гамлета (2004-11-19 16:22) [4]Тут проблема вот в чем. Если сделать запись в главной таблице, а потом ее обновит (завершить транзакцию), то добавление в подчиненной таблице работает правильно.
Если же добавить запись в главную и сразу же попытаться записать в дочернюю, то получаю исключение
violation of FOREIGN KEY constraint "FK_CHILDTABLE_MASTER_ID" on table "CHILDTABLE".
Т.е. не находится внешний ключ в главной таблице.
Однако в InsertSQL в дочерней используется :MAS_MASTER_ID, что автоматом подставляет ID из главной таблице, и при просмотре лога sql видим, что таки правда, такой код и подставляется. Но ошибка генерируется
← →
Term (2004-11-19 18:37) [5]
> if (new.id is null) then
> new.id = gen_id(generator_name, 1);
слушай советы не зря говорят, и подумай что происходит условие в тригере не просто так,
и вставляй в зависимую таблицу запись после того как произойдёт вставка в главную
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c