مبادلة صفين في MS سيكلسرفير الاحتفاظ المفتاح الأساسي الأصلي وبدون التحديث اليدوي
-
20-08-2019 - |
سؤال
ولدي المشكلة التالية: لدي الصفوف مثل
ID CODE NAME .........
1 h1100h1 Cool example1 .........
2 h654441 Another cool1 .........
وأود أن مقايضتهم الحفاظ على جميع مفاتيح والمعوقات الأساسية القديمة. وبطبيعة الحال، وأنا يمكن أن تحل بسهولة هذا يدويا عن طريق تحديث الصفوف. أنا نوع من يتساءل عما إذا كان أي شخص لديه أي حلا ممتازا لهذا النوع من المشاكل بدلا من مجرد تنفيذ الأمر التحديث يدويا. أنا حقا حقا نقدر أي اقتراحات أو توصيات.
المحلول
وأنا لم تختبر هذا، ولكن أعتقد أنه سوف يعمل. أنا على افتراض أن الهوية هي عمود واحد مفتاح أساسي. إذا كان هذا ليس هو الحال بعد ذلك سوف تحتاج إلى ضبط هذا الرمز قليلا للتعامل مع PK.
UPDATE
T1
SET
column_1 = T2.column_1,
column_2 = T2.column_2,
...
FROM
dbo.My_Table T1
INNER JOIN dbo.My_Table T2 ON
T2.id =
CASE
WHEN T1.id = @id_1 THEN @id_2
WHEN T1.id = @id_2 THEN @id_1
ELSE NULL
END
WHERE
T1.id IN (@id_1, @id_2)
نصائح أخرى
والنفس الانضمام مع التحديث الخاص المراهنة فقط
لا تنتمي إلى StackOverflow