我将 SQL Server 2008 用于 Web 应用程序。
我有一个对几列有约束的表。运行 Web 应用程序时,出现数据库错误:
违反 UNIQUE KEY 约束“UQ__Customer__DDDFDD3762E4AA3C”。无法在对象“dbo.Customer”中插入重复键。重复键值为 (<NULL>)
我有一种直觉是哪一列导致了这个问题。
但是,在 Microsoft SQL Server Management Studio 中有什么方法可以用来查明该列吗?
我将 SQL Server 2008 用于 Web 应用程序。
我有一个对几列有约束的表。运行 Web 应用程序时,出现数据库错误:
违反 UNIQUE KEY 约束“UQ__Customer__DDDFDD3762E4AA3C”。无法在对象“dbo.Customer”中插入重复键。重复键值为 (<NULL>)
我有一种直觉是哪一列导致了这个问题。
但是,在 Microsoft SQL Server Management Studio 中有什么方法可以用来查明该列吗?
select * from
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
where CONSTRAINT_NAME = '.....'
编辑:
如果约束没有出现在 中information_schema
,您可以尝试在 sys* 表中查找它:
select c.name as [column], t.name as [table]
from sysobjects o
inner join syscolumns c on o.id = c.cdefault
inner join sysobjects t on c.id = t.id
where o.name = 'UQ....'
Try something like this. It will give you a list of all unique constraints
SELECT TC.CONSTRAINT_CATALOG as [Database],
TC.CONSTRAINT_SCHEMA as [Schema],
TC.TABLE_NAME as [Table],
CCU.COLUMN_NAME as [Column]
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CCU on TC.CONSTRAINT_NAME = CCU.CONSTRAINT_NAME
WHERE TC.CONSTRAINT_TYPE = 'UNIQUE'
右键单击表格,然后选择Script table as
-> Create to
-> New query editor window
。这将列出表上的所有约束及其名称。
或者,单击+
表格旁边的,然后单击+
约束旁边的。您的约束应该列在那里。您可以双击来编辑它,或者像上表中描述的那样编写脚本。