将可更新视图解析为xml列?

时间:2012-09-09 13:57:32

标签: sql-server xml sql-server-2008

我有视图定义的以下部分

SELECT
   codedValue.value('Code[1]','nvarchar(max)') AS "Code",
   codedValue.value('Name[1]', 'nvarchar(max)') AS "Value"
  FROM GDB_ITEMS AS items 
  CROSS APPLY items.Definition.nodes
   ('/GPCodedValueDomain2/CodedValues/CodedValue') AS CodedValues(codedValue)
  WHERE items.Name = 'tlu_Loss_list' 

查询应用程序生成的xlm列中的“code”和“value”。在这种情况下,我能够只读取xml列中的代码和值。

理想情况下,我想使视图可更新,因此用户可以输入自己的代码和值,这些代码和值将被复制到此xml列。这可能吗?

这是xml列和表的相关部分:

xml列中的现有数据:

<GPCodedValueDomain2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:typens="http://www.esri.com/schemas/ArcGIS/10.0" xsi:type="typens:GPCodedValueDomain2">
  <DomainName>tlu_Loss_List</DomainName>
  <FieldType>esriFieldTypeString</FieldType>
  <MergePolicy>esriMPTDefaultValue</MergePolicy>
  <SplitPolicy>esriSPTDefaultValue</SplitPolicy>
  <Description>Loss_Reason</Description>
  <Owner>DBO</Owner>
  <CodedValues xsi:type="typens:ArrayOfCodedValue">
    <CodedValue xsi:type="typens:CodedValue">
      <Name>Abandoned</Name>
      <Code xsi:type="xs:string">AB</Code>
    </CodedValue>
    <CodedValue xsi:type="typens:CodedValue">
      <Name>Coyote</Name>
      <Code xsi:type="xs:string">CO</Code>
    </CodedValue>
  </CodedValues>
</GPCodedValueDomain2>

持有XML的表:

CREATE TABLE [dbo].[GDB_ITEMS](
    [ObjectID] [int] NOT NULL,
    [UUID] [uniqueidentifier] NOT NULL,
    [Type] [uniqueidentifier] NOT NULL,
    [Name] [nvarchar](226) NULL,
    [PhysicalName] [nvarchar](226) NULL,
    [Path] [nvarchar](512) NULL,
    [Url] [nvarchar](255) NULL,
    [Properties] [int] NULL,
    [Defaults] [varbinary](max) NULL,
    [DatasetSubtype1] [int] NULL,
    [DatasetSubtype2] [int] NULL,
    [DatasetInfo1] [nvarchar](255) NULL,
    [DatasetInfo2] [nvarchar](255) NULL,
    [Definition] [xml] NULL,
    [Documentation] [xml] NULL,
    [ItemInfo] [xml] NULL,
    [Shape] [geometry])

1 个答案:

答案 0 :(得分:0)

您可以使用“代替”触发器执行此操作:Designing INSTEAD OF triggers

有关修改XML的示例,请参阅modify() MethodXML Data Modification Language