0

1 行の 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 ...

これはうまくいきません。:)

助言がありますか?

ティア

4

1 に答える 1

4

すべての XML 作成を、列 XmlData に入る単一のスカラーにラップするサブクエリが必要です。ここでも TYPE を使用して、文字列ではなく XML 型のスカラーを作成します。

INSERT INTO CampaignArchive(CampaignID, XmlData)
SELECT CampaignID, (
 select (really long list of columns) 
 FROM (all my tables) FOR XML PATH ..., type);
于 2009-09-04T23:20:39.393 に答える