تي-سكل حذف السجلات المدرجة
-
12-11-2019 - |
سؤال
أعلم أن العنوان قد يبدو غريبا ولكن هذا ما أريد القيام به:
- لدي جدول مع العديد من السجلات.
أريد الحصول على بعض هذه السجلات وإدراجها في جدول آخر.شيء من هذا القبيل:
INSERT INTO TableNew SELECT * FROM TableOld WHERE ...
الجزء الصعب هو أنني أريد أن يتم حذف هذه الصفوف التي أدرجتها من جدول الأصل أيضا.
هل هناك طريقة سهلة للقيام بذلك ، لأن التفكير الوحيد الذي تمكنت من القيام به هو استخدام جدول مؤقت لحفظ السجلات المحددة ومن ثم وضعها في الجدول الثاني وحذف الصفوف التي تتطابق معها من الجدول الأول.إنه حل ، ولكن مع وجود العديد من السجلات (أكثر من 3 ملايين ونصف) أبحث عن فكرة أخرى...
المحلول
في عام 2005+ استخدام OUTPUT
بند مثل هذا:
DELETE FROM TableOld
OUTPUT DELETED.* INTO TableNew
WHERE YourCondition
سيتم تنفيذها في معاملة واحدة وإما الانتهاء أو التراجع في وقت واحد
نصائح أخرى
يمكنك استخدام إدراج ... الإخراج جملة لتخزينمعرف الصفوف المنسوخة في طاولة مؤقتة.ثم يمكنك حذف الصفوف من الجدول الأصلي بناء على الجدول المؤقت. giveacodicetagpre.
href="http://data.stackexchange.com/stackoverflow/query/59947/new" rel="nofollow"> مثال العمل في مستكشف البيانات.
يجب عليك فعل شيء مثل هذا: giveacodicetagpre.