【问题标题】:SQL 2000/2005/2008 - Find Unique Constraint Name for a columnSQL 2000/2005/2008 - 查找列的唯一约束名称
【发布时间】:2010-09-28 11:19:37
【问题描述】:

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

我需要删除此约束,但不幸的是我不知道名称。我有一个脚本,它当前列出了表上的所有唯一约束,但我需要了解如何更进一步并将约束名称与列相关联。

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。

任何建议将不胜感激。

谢谢 本

【问题讨论】:

  • 如果您发布代码或 XML,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮 (101 010) 以很好地格式化和语法高亮!

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


【解决方案1】:

您应该能够使用 INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE 来确定这一点。

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

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

【讨论】:

  • 感谢 JamWheel。这似乎在 SQL 2000、2005 和 2008 上运行良好且符合预期!
  • 如果您发布代码或 XML,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮 (101 010) 以很好地格式化和语法高亮!
  • 这对我来说找不到默认约束;它只定位了 FK 约束。 stackoverflow.com/a/6883039/109736 为我工作。
猜你喜欢
  • 2011-01-11
  • 2013-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多