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

Вниз

Какие параметры указать в транзакции, если нужно   Найти похожие ветки 

 
Тень отца Гамлета   (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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.048 c
1-1102314727
Adis Tadas
2004-12-06 09:32
2004.12.19
как вернуть _Recordset из DLL ?


6-1097132350
The X
2004-10-07 10:59
2004.12.19
Проблема с NMPOP3.Connected


1-1101965467
Pupkov
2004-12-02 08:31
2004.12.19
Поиск проседуры в runtime пакетах


14-1101538365
Knight
2004-11-27 09:52
2004.12.19
Почему винда читает компакты хуже доса?


6-1097084387
Stas_on
2004-10-06 21:39
2004.12.19
Как узнать IP компа в сетке из 12+1 компов?