Aucun des exemples ci-dessus est pratique ... Il devrait ressembler à la section de mise à jour suivante:
/*******************************************************************************/
/* DATA TABLE IS PREPARING */
/*******************************************************************************/
IF EXISTS (SELECT TOP 1 * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'TEST' AND TABLE_SCHEMA = 'dbo')
DROP TABLE [dbo].[TEST];
CREATE TABLE [dbo].[TEST](
[ID] int IDENTITY(1,1) NOT NULL,
[Name] varchar(50) NULL,
[Surname] varchar(50) NULL,
[AGE] int NULL,
CONSTRAINT [PK_TEST] PRIMARY KEY CLUSTERED
([ID] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/*******************************************************************************/
/* INSERTING TEST VALUES */
/*******************************************************************************/
INSERT INTO dbo.TEST (Name, Surname, AGE)
SELECT 'Sevim' , 'PARLAYAN' , 36 UNION ALL
SELECT 'Uğur' , 'PARLAYAN' , 41 UNION ALL
SELECT 'Berkan Cahit' , 'PARLAYAN' , 17 UNION ALL
SELECT 'Miray Çağla' , 'PARLAYAN' , 6 ;
SELECT * FROM dbo.TEST ORDER BY ID;
-- At this point maybe the trigger can be disabled...
/*******************************************************************************/
/* I'm swapping Uğur and Sevim rows (So, rows into 1 and 2 do swapping)... */
/*******************************************************************************/
UPDATE TT
SET TT.Name = ZZZ.Name
, TT.Surname = ZZZ.Surname
, TT.AGE = ZZZ.AGE
FROM dbo.TEST as TT
JOIN (
SELECT TOP 1 * FROM dbo.TEST WHERE ID = 2 /* Big key value first */ UNION ALL
SELECT TOP 1 * FROM dbo.TEST WHERE ID = 1 /* Then small key value... */
) as ZZZ on ZZZ.ID in (1, 2)
WHERE TT.ID in (1, 2) ;
-- At this point maybe the trigger can be activated...
SELECT * FROM dbo.TEST ORDER BY ID
La première fois que je lis votre question, je pensais que vous vouliez faire une copie d'une ligne , mais maintenant je commence à penser que vous voulez mettre à jour les valeurs dans une rangée pour égaler les valeurs dans une autre rangée ... mais je ne comprends pas la partie 'vice versa' de votre question. Pouvez-vous donner quelques exemples pour clarifier votre question? –
vice versa signifie ici que j'ai besoin aussi de mettre à jour la ligne que je pris des données à partir avec les données de ligne mise à jour exemple: row1: 1,2,3 row2: 5,6,7 après que je veux faire face row1: 5,6,7 row2: 1,2,3 J'espère que vous l'avez compris. –
@AmRoSH: J'ai réécrit votre question pour qu'elle soit plus facile à comprendre. J'espère que je l'ai fait correctement, sinon veuillez le modifier à nouveau. Et vous devriez essayer de vous écrire clairement la question à l'avenir - il vous obtiendra des réponses de meilleure qualité plus rapidement. –