SQL 2000/2005/2008 - 查找列的唯一约束名称

时间:2010-09-28 11:19:38

标签: sql sql-server sql-server-2005 sql-server-2008 sql-server-2000

我有一个包含需要数据类型升级的列的表。但是,由于未命名的唯一约束,运行任何alter脚都会导致错误。

我需要放弃这个约束但不幸的是我不知道这个名字。我有一个脚本,它目前列出了表中的所有唯一约束,但我需要找到如何更进一步,并将约束名称与列关联。

Select *
From sysobjects
Where sysobjects.xtype = 'UQ' AND sysobjects.parent_obj= OBJECT_ID(N'Users')

返回

UQ__Users__45F365D3
UQ__Users__46E78AOC

我需要知道哪些列链接到哪些列才能删除正确的列。我需要支持SQL 2000,2005和2008。

任何建议都将不胜感激。

由于 本

1 个答案:

答案 0 :(得分:9)

你应该可以使用INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE来建立它。

SELECT 
   CONSTRAINT_NAME 
FROM 
   INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE 
WHERE 
   TABLE_NAME = 'TableName' 
   AND COLUMN_NAME = 'ColumnName'

不确定SQL 2000中是否完全支持该视图。