mysql ident current_sql server 2000 @@IDENTITY和SCOPE_IDENTITY和IDENT_CURRENT的区别

@@IDENTITY和SCOPE_IDENTITY和IDENT_CURRENT的区别

1,@@IDENTITY是得到当前会话的所有范围的最后插入的IDENTITY值

2,SCOPE_IDENTITY是得到当前会话的当前范围的最后插入的IDENTITY值

3,IDENT_CURRENT是得到指定表的最后插入的IDENTITY值,与会话、范围无关。

因为在插入和得到IDENTITY值之间可能会有其它的事情发生,但是你只想得到我刚才插入的IDENTITTY值,只有使用SCOPE_IDENTITY函数才行。

以下是测试SQL

(1)

USE pubs

DROP TABLE t6

DROP TABLE t7

GO

CREATE TABLE t6(id int IDENTITY)

CREATE TABLE t7(id int IDENTITY(100,1))

GO

CREATE TRIGGER t6ins ON t6 FOR INSERT

AS

BEGIN

INSERT t7 DEFAULT VALUES

END

GO

--end of trigger definition

SELECT   * FROM t6

--id is empty.

SELECT   * FROM t7

--id is empty.

--Do the following in Session 1

INSERT t6 DEFAULT VALUES

declare @i int

set @i = 0

while @i < 20000

begin

set @i = @i + 1

print @i

end

SELECT @@IDENTITY as "@@IDENTITY0"

/*Returns the value 100, which was inserted by the trigger.*/

SELECT SCOPE_IDENTITY()   'SCOPE_IDENTITY()0'

/* Returns the value 1, which was inserted by the

INSERT stmt 2 statements before this query.*/

SELECT IDENT_CURRENT('t7') 'IDENT_CURRENT(t7)0'

/* Returns value inserted into t7, i.e. in the trigger.*/

SELECT IDENT_CURRENT('t6') 'IDENT_CURRENT(t6)0'

/* Returns value inserted into t6, which was the INSERT statement 4 stmts before this query.*/

-- Do the following in Session 2

SELECT @@IDENTITY "@@IDENTITY1"

/* Returns NULL since there has been no INSERT action

so far in this session.*/

SELECT SCOPE_IDENTITY() 'SCOPE_IDENTITY()1'

/* Returns NULL since there has been no INSERT action

so far in this scope in this session.*/

SELECT IDENT_CURRENT('t7') 'IDENT_CURRENT(t7)1'

/* Returns the last value inserted into t7.*/

当在执行while @i < 20000

begin

set @i = @i + 1

print @i

end这个地方的时候,就可以用

INSERT t6 DEFAULT VALUES

INSERT t7 DEFAULT VALUES

select * from t6

select * from t7来进行操作数据库

等到全部执行完了,你就会发现只有SCOPE_IDENTITY列永远是1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值