SQL 中@@identity变量的问题

-- 建立表
create table title(titleid int identity (1,1)not null,titlename nvarchar(50)null,)
create table article(articleid int identity(1,1)not null,article nvarchar(max)null,titleid int null)

--插入数据
INSERT title(titlename)values(N' 标题 1')
insert article(article,titleid)values(N'内文 1',@@identity)

INSERT title(titlename)values(N' 标题 2')
insert article(article,titleid)values(N'内文 2',@@identity)

insert article(article,titleid)values(N'回复',@@identity)

——查询结果

select * from title

titleid titlename
1 标题 1
2 标题 2

select * from article

articleid article titleid
1 内文 1 1
2 内文 2 2
3 回复 2

article 表的第三第记录中的titleid为什么是2?
@@edentity的值是从哪个表取得的?article表的第三条记录的identity值不是3吗?这里为什么是2呢?

谢谢!

^_^,米有分呢~~~~~~~

为什么呢?楼主要搞明白,@@identity这个全局变量的含义:是得到当前会话的所有范围的最后插入的IDENTITY值
去深入理解这句话,你就明白为什么会这样了。
--插入数据
INSERT title(titlename)values(N' 标题 1')--插入数据后,@@identity=1
insert article(article,titleid)values(N'内文 1',@@identity)--这里获取的值为1,插入后@@identity=1

INSERT title(titlename)values(N' 标题 2')--插入后,@@identity=2
insert article(article,titleid)values(N'内文 2',@@identity)--所以这里的值为2,插入后@@identity=2

insert article(article,titleid)values(N'回复',@@identity)--z这里获取的值为2 ,插入后@@identity=3
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网