在SQL Server 2008中,我想获取主键跨越的列(列名称)列表.
我试过了
SELECT *
FROM sys.key_constraints
LEFT JOIN sysconstraints ON (sys.key_constraints.object_id = sysconstraints.constid)
WHERE
type = 'PK'
AND parent_object_id = OBJECT_ID('dbo.permissioncache');
Run Code Online (Sandbox Code Playgroud)
这将返回主键和一些其他值,但不返回PK列的完整列表.
我还需要加入哪些其他表格?
试试这个方法
INFORMATION_SCHEMA 方法
SELECT TC.TABLE_NAME,
COLUMN_NAME,
TC.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cc
ON cc.Constraint_Name = tc.Constraint_Name
AND cc.Table_Name = tc.Table_Name
WHERE Constraint_Type = 'PRIMARY KEY'
AND cc.Table_Name = 'Yourtable'
Run Code Online (Sandbox Code Playgroud)
Sys 选项,
SELECT t.name AS TABLE_NAME,
c.name AS COLUMN_NAME,
kc.name AS CONSTRAINT_NAME
FROM sys.key_constraints AS kc
JOIN sys.tables AS t
ON t.object_id = kc.parent_object_id
JOIN sys.index_columns AS ic
ON ic.object_id = t.object_id
AND ic.index_id = kc.unique_index_id
JOIN sys.columns AS c
ON c.object_id = t.object_id
AND c.column_id = ic.column_id
WHERE kc.type = 'PK'
AND t.name = 'Yourtable'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |