![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получение значения из триггера по созданию новой записи [D7, IB6.x]
Boroda Oleg © (2004-02-04 16:15:00)
Добрый день!
Точно помню, что уже читал когда-то обсасывание этой проблеммы, но вот где - не помню.
Нужно получить ID записи после ее создания. В самой таблице организован метод автоматической генерации новых ключей через генератор. Естественно, имеется тригер, который, надо думать, срабатывает при создании новых записей. Как "увидеть" из-под Дельфи значение параметра ID после добавления новой записи?
HSolo (2004-02-04 17:10:00) [41]
> а если два юзера практически одновременно запустят новую запись?
Ну и что? Вы же, надеюсь берете на клиенте
GEN_ID(MyGenerator,1)
а потом вставляете?
Boroda Oleg (2004-02-04 17:02:00) [42]
Т.Е. поднимаю значение генератора
Вызываю DataSet.Insert
Один недостаток - а если два юзера практически одновременно запустят новую запись?
Может проще не пользоваться тригерами, а вызывать StoredProc по DataSet.onNewRecord - у меня раньше все так было реализованно, сбоев не было не разу, правда работал через BDE.
Johnmen (2004-02-04 16:45:00) [43]
>Boroda Oleg
Если твоему приложению надо знать этот ID, то стандартная рекомендация - получать его значение ДО вставки.
Vlad (2004-02-04 16:37:00) [44]
Refresh AfterPost ?
Boroda Oleg (2004-02-04 16:23:00) [45]
Не, в триггере я ее прописал:
if (NEW.ID_ACCOUNT is NULL) then NEW.ID_ACCOUNT = gen_id(GEN_ACCOUNT,1);
Меня заботит проблемма, как этот NEW.ID_ACCOUNT увидеть из Дельфи, после того, как он стал не NULL.
Johnmen (2004-02-04 16:17:00) [46]
GEN_ID(MyGenerator,0)
НЕ гарантируется достоверность при многопользовательской работе.