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

Вниз

Значение поля, полученное генератором   Найти похожие ветки 

 
i   (2002-08-21 15:27) [0]

Подскажите пожалуйста. Как можно получить значение поля, только что вставленной записи, формируемое при помощи генератора? Заранее спасибо.


 
Johnmen ©   (2002-08-21 15:40) [1]

Сначала узнавать значение генератора, а потом вставлять его...

Какие компоненты доступа ?


 
i   (2002-08-21 15:48) [2]

А если между узнаванием и вставкой кто-то успеет вставить свою запись?


 
Reindeer Moss Eater   (2002-08-21 15:52) [3]

Наздоровье, пусть вставляет. Лишь бы и он брал значение из генератора


 
i   (2002-08-21 15:52) [4]

IBSQL


 
i   (2002-08-21 16:04) [5]

В том то все и дело что тот другой делает вставки с использованием того же генератора, прописанного в триггере на вставку!


 
Reindeer Moss Eater   (2002-08-21 16:05) [6]

В таком случае где же здесь ты нашел проблему?


 
i   (2002-08-21 16:13) [7]

В чем суть. Есть таблица с внешним ключом на саму себя. Как заполнить значение внешнего ключа при вставке новой записи значением первичного ключа предыдущей записи. Обе вставки проиисходят в одной транзакции.


 
Reindeer Moss Eater   (2002-08-21 16:15) [8]

Тебе же уже сказали как:
Johnmen © (21.08.02 15:40)


 
i   (2002-08-21 16:39) [9]

Ответ неправильный. Может получиться так, что вставленная запись будет ссылаться не на ту запись какую надо.


 
Reindeer Moss Eater   (2002-08-21 16:45) [10]

Ответ правильный.

Получил значение генератора.
Вставил парент-запись с этим значением.
Получил значение генератора.
Вставил чайлд запись исползуя оба получееных значения генератора.

И где тут "может получиться так ...." ?


 
i   (2002-08-21 16:50) [11]

А как же другие, работающие с этой же базой? Они выполняют такие же вставки и пользуются теми же генераторами.


 
Reindeer Moss Eater   (2002-08-21 16:51) [12]

Бля! Ну и что из этого??????


 
Reindeer Moss Eater   (2002-08-21 16:52) [13]

У них будет все то же самое, кроме значений генераторов!


 
i   (2002-08-21 16:54) [14]

пока я буду вставлять запись с зараннее узнаным значением первичного ключа этот генератор уже изменится


 
Reindeer Moss Eater   (2002-08-21 16:57) [15]

И это хорошо! Для этого генераторы нам и даны.


 
Johnmen ©   (2002-08-21 16:59) [16]

i (21.08.02 16:54)

И что ? В чем же криминал ?


 
i   (2002-08-21 17:02) [17]

понятно. Спасибо за дискуссию.


 
Johnmen ©   (2002-08-21 17:02) [18]

Кажись я понял...

Убрать работу с генератором из триггера !


 
i   (2002-08-21 17:04) [19]

Не хочу убирать генератор из триггера.


 
i   (2002-08-21 17:05) [20]

точнее нельзя убирать


 
Val ©   (2002-08-21 17:13) [21]

>i (21.08.02 17:05)
весело тут у вас...
а почему нельзя, можно вынести в процедурку, натворить в ней дел и вызывать из триггера.


 
Johnmen ©   (2002-08-21 17:13) [22]

Тогда придется гиморойничать...:0)
вариант №1 - если есть уникальный индекс, вытащить по нему запись
вариант №2 - в триггер добавить соответствующий POST_EVENT и обрабатывать его


 
Reindeer Moss Eater   (2002-08-21 17:19) [23]

Да все просто на самом деле.
Нельзя убирать получение значения генератора из триггера - не убирай это.
НО!
В триггере анализируй новое значение ключевого поля. Если оно не NULL, не дергай генератор, а вставляй то, что пришло с клиента. Если нулл то получи новое значение генератора и вставь его.


 
Reindeer Moss Eater   (2002-08-21 17:21) [24]

При этом все записи, вставляемые приложением, которое "знает" о том, что в таблице "дерево" получат правильные ключи. А все записи, вставляемые например из WISQL не останутся без PK


 
Mambet   (2002-08-22 06:58) [25]

В триггере ставишь проверку:
if (new.NNN is null) then new.NNN = gen_id(TALMNNN, 1);

Перед вставкой записи получаешь значение генератора и увиличиваешь его на 1:
SELECT GEN_ID(TalmNnn,1) AS NEW_ID FROM RDB$DATABASE

Это значение и присваиваешь полю Nnn.


 
i   (2002-08-22 08:00) [26]

Thanks



Страницы: 1 вся ветка

Текущий архив: 2002.09.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
14-35919
Лана Розанова
2002-08-19 10:26
2002.09.12
ыви


8-35826
Fredericco
2002-04-04 17:35
2002.09.12
Простите за, наверное, глупый вопрос.


14-35876
LaCnez
2002-08-16 13:36
2002.09.12
Проблема с Win XP


1-35679
7Up
2002-09-02 12:27
2002.09.12
INSTAPI в С. А в Delphi?


1-35683
Grande
2002-09-02 13:48
2002.09.12
Имеется задание: прослушать определенный IP адрес в сети.