【问题标题】:Database XML field with constraints具有约束的数据库 XML 字段
【发布时间】:2016-03-09 14:31:06
【问题描述】:

我正在做一个应用程序,我的客户可能需要在数据库架构中进行数据扩展。

要进行数据扩展,我有一个 XML 数据字段,用于存储每个客户扩展。

CustomerID |    Name   | XML field 
   1            Jack     <Age>24</Age>
   2            Marie    <Country>Norway</Country>

我的问题是,如果 Jack 现在希望他的属性 Age 有一个约束 NOT NULL,这是否可能而不影响其他客户?

我的另一个问题是,如果 Marie 想要一个关于属性 Country 的索引,这是否可能而不影响其他客户?

【问题讨论】:

    标签: sql xml database


    【解决方案1】:

    您可以为需要另一个可为空的列的 XML 文件添加一个 Constraint NOT NULL 作为 XSD。

    CustomerID ¦ Name  ¦ XML field                 ¦ XSD field
    ------------------------------------------------------------------------------------------
         1     ¦ Jack  ¦ <Age>24</Age>             ¦ <xs:element name="Age" nillable="false"/>
    ------------------------------------------------------------------------------------------
         2     ¦ Marie ¦ <Country>Norway</Country> ¦ 
    

    关于索引,我个人会说不应该对 XML 进行索引。但是this 可能会对您有所帮助。

    如果您希望在 SQL 中使用您的约束,那么我无法帮助您。我相信正如 Nikolas Charalambidis 所说,你不能为单元格设置条件,因为 SQL 不是为类似的东西构建的。

    【讨论】:

      【解决方案2】:

      NOT NULL 约束强制 不接受空值。它适用于一整列,所以你不能。

      如果您想始终对所选行强制使用任何值,则必须使用触发器。检查所选项目中是否存在空值,如果是,则将其更改为默认值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多