1、表中定义自增列
一个表只可以有一个自增列,当使用managestudio设计表时,当你设置多个自增列时,设置后一个时,前一个会自动变为普通列。
当使用脚本增加多个自增列时,会报如下错误:
指定了多个标识列。只允许为每个表指定一个标识列。
2、什么时候会要用到获取这个值?
一般在含有自增列(标识列)的表,这个列都是主键列,当然就很可能作为其他表外键,所以当我们做插入关联记录的时候,就可能
将标识列的值同时插到另一个表中,所以这时我们想获取这个自增列的值;
但是,我们知道自增列默认情况是不让我们自己维护的,即在插入的时候不允许对自增列(标识列)赋值,而是系统给我们产生,那么
这样一来我们该如何或这个值,以便插入另外一个表,就成为了一个问题。
3、如何获取?
IDENT_CURRENT('TableName') :这个用于获取指定表中自增列的当前值;
注意:
如果是在插入语句后使用此函数,可以直接取到,最后插入自增列的值;
而如果想在没有插入数据之前就获取将要插入到自增列的值时,要用:IDENT_CURRENT('TableName')+IDENT_INCR('TableName')
这个是获取自增列的递增值:IDENT_INCR('TableName') (注意:这里没有考虑并发情况,即获取了这个值之后,标识列的表被其他操作增加或删除了记录)
1、创建一个带有标识列的表,并初始化2条记录
CREATE TABLE Test_Identity_Col_Table(
ID INT IDENTITY(1,1),
NAME VARCHAR(100)
)INSERT INTO Test_Identity_Col_Table
SELECT 'JIm'
UNION ALL
SELECT 'Tom'
2、执行IDENT_CURRENT('TableName') + IDENT_INCR('TableName') 查看效果:
PRINT 'Ident_Current='+CAST(IDENT_CURRENT('Test_Identity_Col_Table') AS VARCHAR(100))
PRINT 'Ident_Incr='+CAST(IDENT_INCR('Test_Identity_Col_Table') AS VARCHAR(100))/*
* Ident_Current=2
Ident_Incr=1
*/
3、执行一批命令,查看执行期间两个函数返回值变化情况