【问题标题】:resolve updatable view to xml column?将可更新视图解析为 xml 列?
【发布时间】:2012-09-09 13:57:31
【问题描述】:

我有以下视图定义部分

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 列中查询“代码”和“值”。在这种情况下,我可以只读 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])

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢安。触发器现在不是我的挑战,我不清楚要放置在触发器中的 xml 插入语法。
    • 我自己没有做过,但是我刚刚添加的链接包括解释和示例。祝你好运!
    猜你喜欢
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 2012-01-30
    • 2015-04-13
    • 2017-11-07
    相关资源
    最近更新 更多