Работает следующий сегмент кода T-SQL, но мне интересно, есть ли более умный и/или менее подробный способ выполнить обмен значениями полей между двумя разными строками. (Код имеет жестко закодированные значения PKEY для простоты.)Обмен значениями между двумя строками данных
BEGIN TRAN;
declare @swapFormSeqA int;
declare @swapFormSeqB int;
SELECT @swapFormSeqA = DisplaySeq
FROM CustomCatalogForm
WHERE CustomCatalogFormId = 1;
SELECT @swapFormSeqB = DisplaySeq
FROM CustomCatalogForm
WHERE CustomCatalogFormId = 2;
UPDATE CustomCatalogForm
SET DisplaySeq = @swapFormSeqB
WHERE CustomCatalogFormId = 1;
UPDATE CustomCatalogForm
SET DisplaySeq = @swapFormSeqA
WHERE CustomCatalogFormId = 2;
COMMIT TRAN;
EDIT: Я использую Sql2k5 специально так 2k8 не вариант.
SQL 2000, 2005 или 2008? Есть несколько интересных трюков в 2k8 вокруг MERGE и OUTPUT, см. Http://sqlblog.com/blogs/adam_machanic/archive/2009/08/24/dr-output-or-how-i-learned-to-stop-worrying -and-love-the-merge.aspx –