sql-server - 如何列出 SQL Server 用户定义表类型的主键?

标签 sql-server tsql

我的问题很简单,如何列出 SQL Server 用户定义表类型的主键(列名)?

例如;

CREATE TYPE [dbo].[MyTableType] AS TABLE
(
    [ID] int NOT NULL, PRIMARY KEY CLUSTERED ( [ID])
)

如何通过查询获取列[ID]

好像只能找到真正的表的主键,不能找到表类型。

最佳答案

这存储在目录 View 中:

SELECT  c.Name
FROM    sys.table_types AS tt
        INNER JOIN sys.key_constraints AS kc
            ON kc.parent_object_id = tt.type_table_object_id
        INNER JOIN sys.indexes AS i
            ON i.object_id = kc.parent_object_id
            AND i.index_id = kc.unique_index_id
        INNER JOIN sys.index_columns AS ic
            ON ic.object_id = kc.parent_object_id
        INNER JOIN sys.columns AS c
            ON c.object_id = ic.object_id
            AND c.column_id = ic.column_id
WHERE   tt.Name = 'YourTypeName';

关于sql-server - 如何列出 SQL Server 用户定义表类型的主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36843216/

相关文章:

sql - 我可以在脚本或存储过程中创建一次性函数吗?

SQL Server 如何始终回滚整个事务

sql - 数据类型 text 不能用作 UNION、INTERSECT 或 EXCEPT 运算符的操作数,因为它不具有可比性

sql - 尝试从 Electron 应用程序连接到SQL Server,但未找到端口错误

java - hibernate 保存正在更新

sql - EXEC 语句中的两个百分号

sql - 在特定单词后返回 SUBSTRING 并在第一个引号处结束

sql-server - SQL Server - 向所有表添加默认约束

sql - SQL Server 是否缓存查询结果?

sql - 如何在 SQL Server 中使用替换更新多个列?