如何在插入记录的时候得知自增量标识列的值?(谢谢)

努力偷懒 2005-11-20 10:38:45
我有一个表Item,里面有一个自增量的标识列ID,我想插入记录的时候,另外一列par_ID的值为ID列的值,我不知道如何实现!
...全文
271 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jin2005 2005-11-24
你可以这样:
declare @identity
insert into 表1 values(需插入的字段)
@identity=@@identity
insert into 表2 values(@identity,其他字段)
  • 打赏
  • 举报
回复
努力偷懒 2005-11-24
楼上的这样做,能否修改par_id列的值的?
  • 打赏
  • 举报
回复
winehero 2005-11-20
插入前不可能知道这个自增列的值,只有插入后才知道。如果不想用触发器,那么只能
先插入,利用返回的系统常量@@identity获取刚插入的ID,然后Update字段par_ID为@@identity
  • 打赏
  • 举报
回复
$扫地僧$ 2005-11-20
那在你插入之前:
select max(id)+标量增加值 from Item
  • 打赏
  • 举报
回复
breeze19772002 2005-11-20
使用触发器中的inserted表获取
  • 打赏
  • 举报
回复
努力偷懒 2005-11-20
先谢谢了!

能不能不用触发器呢?因为,我想在插入前就知道那个表将要插入的记录的那个自增量标识列的值!
  • 打赏
  • 举报
回复
$扫地僧$ 2005-11-20
eg:
create table A
(
id int IDENTITY (1,1)NOT NULL,
par_ID int
)

--AFTER触发器
CREATE TRIGGER TEMP_SC ON A
AFTER Insert
as
update A set par_ID=inserted.ID from A,inserted where A.ID=inserted.ID


insert A
select 1

select * from A
  • 打赏
  • 举报
回复
$扫地僧$ 2005-11-20
触发器!!
  • 打赏
  • 举报
回复
zoubsky 2005-11-20
你可以对表的结构做如下修改
示例:
declare @tb1 table(id int identity(1,1),name char(10),par_id as [id])
insert into @tb1 (name) values ('a')
insert into @tb1 (name) values ('b')
insert into @tb1 (name) values ('c')
insert into @tb1 (name) values ('d')
select * from @tb1
/*
测试结果
id name par_id
----------- ---------- -----------
1 a 1
2 b 2
3 c 3
4 d 4
*/
  • 打赏
  • 举报
回复
努力偷懒 2005-11-20
select max(id)+标量增加值 from Item--如果删除了很多最后的记录,那么这个方法不准哦!我就是不知道系统是如何知道插入的那个标识列的值的!我总觉得系统有东西记录着这东西!
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2005-11-20 10:38
社区公告
暂无公告