0

我有视图定义的以下部分

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])
4

1 回答 1

0

You might be able to do this with an "instead-of" trigger: Designing INSTEAD OF triggers

For examples of modifying XML, see modify() Method and XML Data Modification Language

于 2012-09-09T17:49:11.223 回答