Ninguno de los ejemplos anteriores es práctico ... Debe quedar como la siguiente sección de actualización:
/*******************************************************************************/
/* 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 primera vez que leí tu pregunta pensé que quería hacer una copia de una fila , pero ahora estoy empezando a pensar que quieres actualizar los valores en una fila para igualar los valores en otra fila ... pero no entiendo la parte "viceversa" de tu pregunta. ¿Puedes dar algunos ejemplos para ayudar a aclarar tu pregunta? –
Viceversa aquí significa que necesito también para actualizar la fila que tomé los datos de ella con los datos de fila actualizada ejemplo: fila1: 1,2,3 fila2: 5,6,7 después de hacer frente i quieren fila1: 5,6,7 fila2: 1,2,3 Espero que lo hayas conseguido. –
@ AmroSH: He reescrito su pregunta para que sea más fácil de entender. Espero haberlo hecho correctamente; de lo contrario, edítalo de nuevo. Y deberías tratar de escribir tu pregunta claramente en el futuro: obtendrás respuestas de mejor calidad más rápidamente. –