سؤال

أرغب في تشغيل استعلام (واسع النطاق) ينتج سطرًا واحدًا من XML. يمثل XML هذا حوالي 12 جدولًا من البيانات العلائقية. عندما أقوم "بحذف" صف من جدول المستوى العلوي ، أود أن "التقاط" حالة البيانات في تلك اللحظة (في XML) ، احفظه على جدول أرشيف ، ثم حذف جميع بيانات جدول الطفل وأخيراً وضع علامة على الجدول/الصف العلوي كـ "isDeleted = 1". لدينا بيانات أخرى معلقة من الجدول الأصل لا تستطيع يتم حذفها ولا يمكن أن تفقد العلاقة مع الجدول العلوي.

لقد عملت معظم XML - انظر رسالتي هنا على تلك العلبة من الديدان.

الآن ، كيف يمكنني التقاط ذلك في طاولة أرشيف؟

CREATE TABLE CampaignArchive(CampaignID int, XmlData XML)

INSERT INTO CampaignArchive(CampaignID, XmlData)
SELECT CampaignID, (really long list of columns) FROM (all my tables) FOR XML PATH ...

هذا فقط لا يعمل. قون

أي اقتراحات؟

تيا

هل كانت مفيدة؟

المحلول

تحتاج إلى مسافة فرعية لالتفاف كل إنشاء XML في عدادات واحدة تنتقل إلى العمود XMLDATA. مرة أخرى ، استخدم النوع لإنشاء قياسي من النوع XML وليس سلسلة:

INSERT INTO CampaignArchive(CampaignID, XmlData)
SELECT CampaignID, (
 select (really long list of columns) 
 FROM (all my tables) FOR XML PATH ..., type);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top