【发布时间】:2013-05-11 07:25:13
【问题描述】:
我看到了一个 SP,其中的身份函数以下列方式调用:
select id = identity(10) ..... into ..... from ......
谁能告诉我我是否只能传递 1 个或 2 个参数而不是三个参数(SEED、INCREMENT、数据类型)?
另外,如果表中的列已经定义为标识,是不是意味着它会自动生成一个唯一的序列号?那么这个identity()函数到底需要什么?
【问题讨论】:
我看到了一个 SP,其中的身份函数以下列方式调用:
select id = identity(10) ..... into ..... from ......
谁能告诉我我是否只能传递 1 个或 2 个参数而不是三个参数(SEED、INCREMENT、数据类型)?
另外,如果表中的列已经定义为标识,是不是意味着它会自动生成一个唯一的序列号?那么这个identity()函数到底需要什么?
【问题讨论】:
Sybase 12.0.1 文档here 说:
IDENTITY 函数 [杂项]
为 a 中的每个连续行生成整数值,从 1 开始 询问。其实现与 NUMBER 函数相同。
语法
IDENTITY(表达式)参数
• 表达式 一个表达式。表达式已解析,但被忽略 在函数执行期间。
返回
INT
备注
IDENTITY函数的描述同 NUMBER 函数的说明。
另见
•NUMBER 函数[杂项]
标准和兼容性
• SQL/2008 供应商扩展。
例子
以下语句返回一个按顺序编号的列表 员工。
从员工中选择 IDENTITY(10),姓氏;
与 MS SQL Server 不同,Sybase 只处理一个参数。种子和增量始终为 1。
如果选择的数据中有任何标识列,则它们的值将被复制。 IDENTITY 函数允许您在输出表中创建一个新的标识列。
【讨论】:
identity() 不是唯一标识符。它只是意味着它会自动计数。 PRIMARY KEY 约束将使列唯一以识别行
【讨论】: