在 SQL Server 2005 上使用此 SQL
SELECT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = @TableName
AND COLUMN_NAME=@ColumnName
我得到主键和外键。
如何才能只获取外键? 如何查看约束是主键还是外键?
谢谢
最佳答案
找到了一个更优雅的解决方案 here
下面添加的代码是为了完整性,但所有功劳都归功于 Pinal Dave
SELECT f.name AS ForeignKey,
OBJECT_NAME(f.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id,
fc.parent_column_id) AS ColumnName,
OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName,
COL_NAME(fc.referenced_object_id,
fc.referenced_column_id) AS ReferenceColumnName
FROM sys.foreign_keys AS f
LEFT JOIN sys.foreign_key_columns AS fc
ON f.OBJECT_ID = fc.constraint_object_id
如果您只想要主键...
SELECT i.name AS IndexName,
OBJECT_NAME(ic.OBJECT_ID) AS TableName,
COL_NAME(ic.OBJECT_ID,ic.column_id) AS ColumnName
FROM sys.indexes AS i
INNER JOIN sys.index_columns AS ic
ON i.OBJECT_ID = ic.OBJECT_ID
AND i.index_id = ic.index_id
WHERE i.is_primary_key = 1
将此添加为附加答案,因为它与我之前的答案相去甚远:)
关于sql - 我如何知道 CONSTRAINT_NAME 是主键还是外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/555622/