Я пытаюсь вернуть ключ-значение после оператора INSERT. Пример: У меня есть таблица с именем и идентификатором атрибутов. id - это сгенерированное значение.
INSERT INTO table (name) VALUES('bob');
Теперь я хочу вернуть идентификатор на том же этапе. Как это сделать?
Мы используем Microsoft SQL Server 2008.
Существует много способов выйти после того, как вставляют
, Когда Вы вставляете данные в таблицу, можно использовать ВЫХОДНОЙ пункт для возврата копии данных that’s вставленный в таблицу. ВЫХОДНОЙ пункт принимает две канонических формы: ВЫВОД и ВЫВОД В. Используйте ВЫХОДНУЮ форму, если Вы хотите возвратить данные вызывающему приложению. Используйте ВЫВОД В форму, если Вы хотите возвратить данные таблице или табличной переменной.
DECLARE @MyTableVar TABLE (id INT,NAME NVARCHAR(50));
INSERT INTO tableName
(
NAME,....
)OUTPUT INSERTED.id,INSERTED.Name INTO @MyTableVar
VALUES
(
'test',...
)
IDENT_CURRENT: Это возвращает последние идентификационные данные, созданные для конкретной таблицы или представления на любой сессии.
SELECT IDENT_CURRENT('tableName') AS [IDENT_CURRENT]
SCOPE_IDENTITY: Это возвращает последние идентификационные данные из той же сессии и того же объема. Объемом является хранимая процедура/, инициировали и т.д.
SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY];
@@ ИДЕНТИФИКАЦИОННЫЕ ДАННЫЕ : Это возвращает последние идентификационные данные из той же сессии.
SELECT @@IDENTITY AS [@@IDENTITY];