مبادلة صفين في MS سيكلسرفير الاحتفاظ المفتاح الأساسي الأصلي وبدون التحديث اليدوي

StackOverflow https://stackoverflow.com/questions/484040

سؤال

ولدي المشكلة التالية: لدي الصفوف مثل

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)

نصائح أخرى

والنفس الانضمام مع التحديث الخاص المراهنة فقط

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top