WEB开发网
开发学院数据库MSSQL Server SQL2005用XML数据类型进行数据建模 阅读

SQL2005用XML数据类型进行数据建模

 2007-05-19 09:42:35 来源:WEB开发网   
核心提示: 示例:创建属性表假设您希望提升作者的名字,书籍有一个或多个作者,SQL2005用XML数据类型进行数据建模(9),因此名字是一个多值属性,每个名字都存储在属性表的单独行中,并返回(主键,名字)对行集,在属性表中复制了基表的主键以便向后联接,create table tblPropAutho

示例:创建属性表

假设您希望提升作者的名字。书籍有一个或多个作者,因此名字是一个多值属性。每个名字都存储在属性表的单独行中。在属性表中复制了基表的主键以便向后联接。

create table tblPropAuthor (propPK int, propAuthor varchar(max))

示例:创建用户定义的函数以便从 XML 实例生成行集

下面的表值函数 udf_XML2Table 接受一个主键值和一个 XML 实例。它将检索 元素的所有作者的名字,并返回(主键,名字)对行集。

create function udf_XML2Table (@pk int, @xCol xml)
returns @ret_Table table (propPK int, propAuthor varchar(max))
with schemabinding
as
begin
   insert into @ret_Table
   select @pk, nref.value('.', 'varchar(max)')
   from  @xCol.nodes('/book/author/first-name') R(nref)
   return
end

示例:创建触发器以填充属性表

插入触发器:在属性表中插入行

create trigger trg_docs_INS on T for insert
as
   declare @wantedXML xml
   declare @FK int
select @wantedXML = xCol from inserted
   select @FK = PK from inserted
insert into tblPropAuthor
select * from dbo.udf_XML2Table(@FK, @wantedXML)

删除触发器:基于删除行的主键值,从属性表中删除行

create trigger trg_docs_DEL on T for delete
as
  declare @FK int
  select @FK = PK from deleted
  delete tblPropAuthor where propPK = @FK

上一页  4 5 6 7 8 9 10  下一页

Tags:SQL XML 数据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接