Azure SQL Database与SQL Server文档中SEQUENCE标注sysname的疑问
关于SEQUENCE文档中“类型为sysname”的困惑解答
嘿,我来帮你理清这个容易混淆的点!你完全没搞错SEQUENCE本身的类型逻辑——你指定INT/BIGINT等类型后,序列生成的就是对应类型的数值,这部分是正确的。文档里标注的“类型为sysname”,其实说的是记录SEQUENCE数据类型的元数据字段的类型,而非序列输出值的类型,这是两个完全不同的概念:
- 当你执行
CREATE SEQUENCE dbo.OrderSeq AS BIGINT时,这个序列生成的每一个值都是BIGINT类型,这是你实际使用的序列值类型,和你指定的一致。 - 而文档里提到的“sysname”,是SQL Server系统视图(比如
sys.sequences)中用来存储该序列类型名称的列的数据类型。sysname本质是系统定义的nvarchar(128)别名,专门用来存储数据库对象名称、数据类型名称这类标识符。举个例子,如果你查询:
返回的结果会是SELECT user_type_name, system_type_name FROM sys.sequences WHERE name = 'OrderSeq'bigint,而存储这个字符串的列user_type_name和system_type_name的类型就是sysname——它负责存储类型的名称,而不是序列值的类型本身。
简单来说,文档里的描述是在告诉你“我们用sysname类型的字段来记录你指定的序列类型名称”,而不是说序列本身是sysname类型。这只是元数据存储的细节,和你实际使用SEQUENCE生成的数值类型完全不冲突~
内容的提问来源于stack exchange,提问作者Netside
相关产品推荐
相关产品推荐

