![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Внесение новой записи в БД [D6, IB6.x]
Larisa © (2002-07-24 13:12:00)При внесении новой записи в БД (Interbase) для получения в ключевом столбце уникального значения использую генератор и триггер. Подскажите пожалуйста, как в приложении получить это новое уникальное новое значение ключевого столбца?
Лариса
Val (2002-07-24 17:56:00) [1]медленный, потому, что это выборка все-таки, а генератор хранит одно, последнее значение.
kaif (2002-07-24 17:14:00) [2]2 AlexSam (24.07.02 15:16)
Этот способ не столько тупой, сколько опасный при многопользовательской работе. И иногда медленный (если записей много). А почему медленный - не знаю.
AlexSam (2002-07-24 15:16:00) [3]Есть тупой способ - select max(id) from ...
Val (2002-07-24 14:03:00) [4]если не использовать компоненты прямого доступа, то можно написать хп, возвращающую этот новый ID и в приложении вызывать ее при вставке.
kaif (2002-07-24 13:45:00) [5]Если ключевому полю значение присваивается в триггере, то получить это значение будет невозможно, если только в таблице нет альтернативного уникального ключа, по которому можно было бы перезапросить эту запись (Refresh) на клиент. Поэтому возможны только подхода:
1. Создать альтернативный уникальный ключ, кроме первичного, использовать триггер для получения нового значения первичного ключа и запрос Refresh с применением альтернативного ключа.
2. Сначала запросить новое значение генератора на клиент, а затем уже его вставить без всякого триггера. Компоненты IBX содержат такой механизм.
---------
Я раньше использовал первый метод. В последнее время предпочитаю второй.
Johnmen (2002-07-24 13:35:00) [6]До вставки или после ?
Каковы компоненты доступа ?