带有约束的数据库XML字段

时间:2016-03-09 14:31:07

标签: sql xml database

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

您可以添加约束NOT NULL作为XML文件的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中使用Constraint,那么我无法帮助您。我相信,正如Nikolas Charalambidis所说,你不能为细胞创造条件,因为SQL不是为这样的东西构建的。

答案 1 :(得分:0)

NOT NULL约束强制不接受空值。它适用于整个列,因此您不能。

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