2015-09-27 3 views
0

У меня есть хранимая процедура, которая генерирует динамический SQL, который я вызываю EXEC() в конце, чтобы выполнить оператор UPDATE. Я использую его для обновления различных таблиц, которые имеют разные имена полей для столбца идентификации, то есть, UserId, ProductId, ShoppingCartId и т.д.Инструкция UPDATE t-sql без знания имени поля идентификации

я мог бы просто передать имя поля столбца идентификации с помощью параметра к хранимую процедуру, но мне интересно, есть ли способ динамически ссылаться на столбец идентификатора в инструкции обновления.

EX:

UPDATE @TableName 
SET @ColumnName = @ColumnValue 
WHERE table_identity_field = @RowId 

где table_identity_field находится столбец идентификаторов для этой конкретной таблицы.

ответ

7

Я мог бы просто передать имя поля столбца идентификации с помощью параметра в sproc, но мне интересно, если есть способ динамически ссылаться на столбец идентификаторов в операторе обновления.

Вы можете использовать ключевое слово $IDENTITY ссылаться на столбец идентификации таблицы:

UPDATE TableName 
SET ColumnName = @ColumnValue 
WHERE $IDENTITY = @RowId; 
+0

отлично! благодаря.. –

Смежные вопросы