Keine der obigen Beispiele ist praktisch ... Es ist wie das folgende Update Abschnitt aussehen sollte:
/*******************************************************************************/
/* 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
Das erste Mal, dass ich Ihre Frage habe ich gelesen, haben Sie eine Kopie einer Zeile machen wollte , aber jetzt fange ich an zu denken, dass Sie die Werte in einer Zeile aktualisieren wollen, um den Werten in einer anderen Zeile zu entsprechen ... aber ich bekomme nicht den 'vice versa' Teil Ihrer Frage. Können Sie einige Beispiele zur Klärung Ihrer Frage nennen? –
Umgekehrt bedeutet hier, dass ich brauche auch die Zeile zu aktualisieren, die ich von ihm nahm Daten mit den Daten aus Zeile aktualisiert Beispiel: row1: 1,2,3 row2: 5,6,7 nach Bewältigungs i wollen row1: 5,6,7 row2: 1,2,3 Ich hoffe du hast es. –
@AmRoSH: Ich habe Ihre Frage neu geschrieben, so dass es leichter zu verstehen ist. Ich hoffe, dass ich es richtig gemacht habe, ansonsten bitte nochmal editieren. Und Sie sollten versuchen, Ihre Frage in Zukunft klar zu formulieren - Sie erhalten schneller bessere Antworten. –