关于获取表中自增列最新的产生值

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、执行一批命令,查看执行期间两个函数返回值变化情况



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值