Le segment de code T-SQL suivant fonctionne, mais je me demande s'il existe une manière plus astucieuse et/ou moins verbeuse d'effectuer l'échange de valeurs de champ entre deux lignes différentes. (Le code a des valeurs de pkey codées en dur pour la simplicité.)Échange de valeurs entre deux lignes de données
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: J'utilise Sql2k5 spécifiquement si 2K8 est pas une option.
SQL 2000, 2005 ou 2008? Il y a quelques astuces intéressantes en 2k8 autour de MERGE et OUTPUT, voir http://sqlblog.com/blogs/adam_machanic/archive/2009/08/24/dr-output-or-how-i-learned-to-stop-worrying -and-love-the-merge.aspx –