小编Del*_*lux的帖子

更改表检查约束

在 SQL Server 中的对象资源管理器中,选择外键约束并为其编写脚本时,会生成以下代码。

     USE [MyTestDatabase]
     GO

     ALTER TABLE [dbo].[T2] WITH NOCHECK ADD CONSTRAINT [FK_T2_T1] FOREIGN KEY([T1ID])
     REFERENCES [dbo].[T1] ([T1ID])
     GO

     ALTER TABLE [dbo].[T2] CHECK CONSTRAINT [FK_T2_T1]
     GO
Run Code Online (Sandbox Code Playgroud)

最后一条语句“ALTER TABLE CHECK CONSTRAINT”的目的是什么?它是否运行似乎并不重要。它不会在现有的坏数据上失败,也不会改变将在新数据上强制执行的约束。

谢谢!

sql-server-2008 check-constraints

31
推荐指数
2
解决办法
4万
查看次数

我可以使用属性名称来标识 XML 元素吗?

除了使用COLUMN[1]/@value下面的元素索引,是否可以通过指定属性名称来检索列值,例如:COLUMN[@name=”Prod_ID”]/@value

当我尝试时,我收到此错误:

消息 2389,级别 16,状态 1,第 41 行
XQuery [value()]:“value()”需要单例(或空序列),找到类型为“xdt:untypedAtomic *”的操作数

我的代码:

DECLARE @xml AS XML = '<DATA>
  <ROW RowNumber="1">
    <COLUMN Name="ProdID" Value="1234" />
    <COLUMN Name="AppID" Value="20144" />
    <COLUMN Name="ConsentDesc" Value="My Description" />
    <COLUMN Name="ConsentVer" Value="" />
    <COLUMN Name="ConsentAcceptance" Value="6789" />
    <COLUMN Name="ConsentType" Value="TermsAndConditions" />
    <COLUMN Name="CreatedDate" Value="8/22/2014 3:04:29 PM" />
  </ROW>
</DATA>'

SELECT  
   m.c.value('@RowNumber', 'varchar(50)') AS RowNumber ,
   m.c.value('COLUMN[1]/@Value', 'varchar(50)') AS [ProdID] ,
   m.c.value('COLUMN[2]/@Value', 'varchar(50)') AS [AppID] ,
   m.c.value('COLUMN[3]/@Value', 'varchar(50)') AS [ConsentDesc.] ,
   m.c.value('COLUMN[4]/@Value', 'varchar(50)') …
Run Code Online (Sandbox Code Playgroud)

xml sql-server

7
推荐指数
1
解决办法
5908
查看次数