-- 建立表
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