测试:create table #t( a int identity(1,1), b varchar(10) )insert into #t (b) values (str(@@identity+1)) --第一次插入,@@identity为null,所以b为null select * from #t insert into #t (b) values (str(@@identity+1)) --第二次插入,@@identity为1,所以b为2 select * from #t drop table #t
a int identity(1,1),
b varchar(10)
)insert into #t (b) values (str(@@identity+1)) --第一次插入,@@identity为null,所以b为null
select * from #t
insert into #t (b) values (str(@@identity+1)) --第二次插入,@@identity为1,所以b为2
select * from #t
drop table #t
----------- ----------
1 NULL(所影响的行数为 1 行)
(所影响的行数为 1 行)a b
----------- ----------
1 NULL
2 2(所影响的行数为 2 行)接着执行一次,结果就变成(所影响的行数为 1 行)a b
----------- ----------
1 3(所影响的行数为 1 行)
(所影响的行数为 1 行)a b
----------- ----------
1 3
2 2(所影响的行数为 2 行)呵呵
执行Insert操作前,是不是一定要先“select ”再“insert”?
select
'1','2','3'
--a,b,c from table2
--exec('select ...')
insert into folder(type,name,plist)
values('2','hhhhhhh',ltrim(str((@@IDENTITY+1)))+',70,55,1,-1') 得到的@@IDENTITY总为空值
一个办法就是:先插入,然后再更新。不知道哪位有更好的办法,请赐教!
正在郁闷中ing !
...
--插入一条新的记录
set @var = scope_identity() --得到它的"id"
exec(@sql) --sql里面将id插入