@@IDENTITY,SCOPE_IDENTITY,IDENT_CURRENT




/*
@@IDENTITY	
返回为当前会话的所有作用域中的任何表最后生成的标识值(返回最后执行对象的标识值)


SCOPE_IDENTITY()	
返回为当前会话和当前作用域中的任何表最后生成的标识值(返回语句作用在当前对象的标识值)

IDENT_CURRENT('object') 
返回为任何会话和任何作用域中的特定表最后生成的标识值(返回指定作用对象的标识值)

*/

IF OBJECT_ID('table_A') IS NOT NULL
DROP TABLE table_A
CREATE TABLE table_A
(
 id INT IDENTITY PRIMARY KEY ,
 col VARCHAR(10)
)

IF OBJECT_ID('table_B') IS NOT NULL
DROP TABLE table_B
CREATE TABLE table_B
(
 id INT IDENTITY PRIMARY KEY ,
 col VARCHAR(10)
)

--触发器,插入table_A后,自动插入table_B
IF OBJECT_ID('TR_A') IS NOT NULL
   DROP TRIGGER TR_A
GO
CREATE TRIGGER TR_A
ON table_A
FOR INSERT
AS 
BEGIN
    INSERT INTO table_B SELECT 'trigger'
END


select * from table_A
select * from table_B
--未插入数据时
SELECT @@IDENTITY	--null
SELECT SCOPE_IDENTITY() --null
SELECT IDENT_CURRENT('table_A')	--1
SELECT IDENT_CURRENT('table_B')	--1


--插入table_B(table_B.id=1)
INSERT INTO table_B SELECT 'A'
--结果
SELECT @@IDENTITY	--1
SELECT SCOPE_IDENTITY() --1
SELECT IDENT_CURRENT('table_A')	--1
SELECT IDENT_CURRENT('table_B')	--1


--插入table_A(table_A.id=1),触发后再插入table_B(table_B.id=2)
INSERT INTO table_A SELECT 'A'
--结果
SELECT @@IDENTITY	--2
SELECT SCOPE_IDENTITY() --1
SELECT IDENT_CURRENT('table_A')	--1
SELECT IDENT_CURRENT('table_B')	--2

--简单地讲,就是这样
@@IDENTITY	
返回最后执行对象的标识值

SCOPE_IDENTITY()	
返回执行语句作用对象的标识值

IDENT_CURRENT('object') 
返回指定作用对象的标识值




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值