AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.06.2011, 14:44   #13  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от AndyD Посмотреть сообщение
Для автоинкрементных полей в MS SQL можно воспользоваться вызовом
X++:
select @@identity
после вставки
Угу. Только следует помнить, что @@identity относится к последнему созданному значению в любой таблице

В данном случае, например, если таблица tablex имеет триггер на вставку в котором происходит вставка в связанную таблицу, которая тоже имеет поле со свойством Identity, то в результате @@identity вернет не код записи таблицы tablex, а код записи подчиненной таблицы.

Поэтому в данном конкретном случае лучше использовать функцию SCOPE_IDENTITY(). Примерно так

X++:
stringSQL = " set nocount on;" + "\n" + 
                   " insert into tablex (name) values ('Name3');" + "\n" +
                   " SELECT NewIdent=SCOPE_IDENTITY()" + 
                    "";
rec.open(stringSQL);
Если же используется версия MS SQL 2005 или старше, то есть более строгое решение с использованием опции OUTPUT

X++:
stringSQL = " set nocount on;" + "\n" + 
                   " declare @retVal table(f1 integer)"
                   " insert into tablex (name) output inserted.f1 into @retVal values ('Name3');" + "\n" +
                   " SELECT f1 from @retVal" + 
                    "";
rec.open(stringSQL);
В данном случае я предполагаю, что таблица имеет поле f1 типа integer со свойством identity

Другими словами, одной команды INSERT явно не достаточно. Нужно либо писать процедуру, либо посылать повторный запрос для поиска только что вставленной записи. Что для Вас проще и привычнее, то и делайте.
Теги
ado, insert, odbc, ключ

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Axapta 3.0 Добавление записей во врем. таблицу vagon DAX: Функционал 1 14.02.2011 13:56
Массовое удаление записей через CCADOConnection Shirmin Oleg DAX: Программирование 68 04.05.2010 15:49
добавление поля в таблицу с огромным количеством записей rpr DAX: Программирование 22 24.04.2009 14:13
Задвоение RecId при вставке записей через COM коннектор db DAX: Программирование 1 23.04.2009 15:12
К чему приводит добавление поля в таблицу. si DAX: Программирование 6 21.05.2002 11:54

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:10.