Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Как узнать по выполнении INSETRа ID вставленной записи. ID - INT, генерируется триггером (а не через IDENTITY). Где-то ответ на это был, но, перерыв форм, нашел только для MSSQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 12:04 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
1. В каком триггере у генерируется id: в before или after? 2. Как вы определяете "последнюю вставленную" запись? По максимальному сгенерированному id? Или как по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 12:29 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
1. Before trigger на insert 2. Лучше объяснить на (синтетическом) примере таблица Tab1 ID(MUNERIC) OTHER(VARCHAR 10) ---------------------------------- 1 aaaaaaaa 2 bbbbbbbb Я выполняю вставку INSERT INTO tab1(OTHER) VALUES ('cccccccc') Мне требуется узнать, какое ID будет у вставленной записи. Из-за триггера, если я выполню INSERT INTO tab1(ID,OTHER) VALUES (1,'cccccccc'), то ID будет 3 (для указанного примера) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 13:00 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 13:28 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Пишу в CBuilder 6, ADOCOnnection, ADOQuery. Выдает ошибки. На синтаксис. Увы, ищу дальше. Через то самое ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 14:33 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Должно работать. То что CBuilder и ADO не имеет никакого значения. ЗЫ ";" из запроса убрал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 14:56 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Код: plaintext 1. 2. 3. 4. 5. А если ID генерится через Identity - то же самое или есть еще какой способ узнать ID ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 23:30 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Код: plaintext 1. 2. 3. 4. 5. В MySQL например для этого есть функция LAST_INSERT_ID(). Такая необходимость ведь очень часто возникает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2007, 22:30 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Вероятно, IDENTITY_VAL_LOCAL() - нашел в доках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 10:21 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Вопрос к специалистам. Делаю INSERT в таблицу. СОММИТ. Получаю ID последней записи. Далее этот ID новой транзакцией вставляется в другие таблицы. И при неудаче второй транзакции первая уже не откатится. Фигня получается. Как лучше получить новый ID до завершения транзакции? Генерить в приложении? Или в DB2 есть средства типа интербейзовских генераторов? Или писать хранимую процедуру и держать последний ID в отдельной таблице? (подкиньте текст процедуры, если есть готовая) Как кто поступает в таком случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 18:45 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 03:58 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
khlВопрос к специалистам. Делаю INSERT в таблицу. СОММИТ. Получаю ID последней записи. Далее этот ID новой транзакцией вставляется в другие таблицы. И при неудаче второй транзакции первая уже не откатится. Фигня получается. Правильно, что фигня. Сам же первую транзакию и закрыл. Всё надо было делать в одной транзакции. khl Как лучше получить новый ID до завершения транзакции? В DB2 есть SEQUENCE (последовательности). Можно спросить следующий свободный номер у последовательности. В этом случае удасться избежать получения одного номера несколькими участниками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 10:16 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Народ правильно предложил. Надо было делать SELECT из оператора INSERT. В этом случае Вы получаете набор ID только что созданных записей. При этом закрывать транзакцию совсем не надо. Триггеры и параметры, заполняемые по умолчанию, не ждут завершения транзакции. Далее, в этой же транзакции работайте с полученным набором идентификаторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 10:23 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
khlКак лучше получить новый ID до завершения транзакции?Не завершать ее сразу после insert. :) На самом деле, после того, как вы вставили запись в таблицу с полем generated ... as identity, это значение уже невозможно "откатить" вне зависимости от ваших дальнейших действий. Если для вас это критично (частые rollback?), то используйте таблицу-счетчик, блокируя ее до завершения всей транзакции. Только решите, стоит ли заметная потеря производительности того, или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 10:23 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
CREATE INTO и SEQUENCE, пожалуй решают все проблемы. Сенкс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 11:13 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Alexey PopovДолжно работать. То что CBuilder и ADO не имеет никакого значения. ЗЫ ";" из запроса убрал? Убрал. Та же Ж -вид сбоку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2007, 01:34 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
BagaBagaУбрал. Та же Ж -вид сбоку...А команда db2level что у вас выдает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2007, 09:14 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
DB21085I Instance "DB2" uses DB2 code release "SQL07010" with level identifier "02010105" and informational tokens "DB2 v7.1.0", "n000510" and "". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2007, 13:43 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Ну... ниче...ниче... Бывает хуже )))... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2007, 14:03 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
BagaBagaDB21085I Instance "DB2" uses DB2 code release "SQL07010" with level identifier "02010105" and informational tokens "DB2 v7.1.0", "n000510" and "".Тогда так действительно нельзя. Остается использовать sequence или таблицу-счетчик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2007, 15:23 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinТогда так действительно нельзя. Остается использовать sequence или таблицу-счетчик. А из-за чего? Мне эта строка ничего не говорит. (Как-то запросы пришлось запускать с явным указанием уровня отимизиции[после обновления]. Может, и здесь что такое? ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 01:43 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
Поля автогенерации generated ... as identity появились впервые в DB2 v7.2 for WIN. Значит остается вставлиять ID ручками. А вот откуда брать значение ID решай сам. Или через SEQUENCE, или сам веди таблицу последних использованных значений ID, или на худой конец select max(id). В двух последних случаях придется разруливай блокировками и как следствие - жуткие тормоза при массовом асинхронном вводе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 05:59 |
|
||
|
Узнать ID последней вставленной записи
|
|||
|---|---|---|---|
|
#18+
BagaBagaА из-за чего? Мне эта строка ничего не говорит. (Как-то запросы пришлось запускать с явным указанием уровня отимизиции[после обновления]. Может, и здесь что такое? ).У вас слишком старая версия db2. Так, как я написал (select ... from new table...), можно только, начиная с v8.1.4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 09:22 |
|
||
|
|

start [/forum/topic.php?fid=43&fpage=116&tid=1604700]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 263ms |
| total: | 399ms |

| 0 / 0 |
