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

努力偷懒 2005-11-20 10:38:45
我有一个表Item,里面有一个自增量的标识列ID,我想插入记录的时候,另外一列par_ID的值为ID列的值,我不知道如何实现!
...全文
329 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
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--如果删除了很多最后的记录,那么这个方法不准哦!我就是不知道系统是如何知道插入的那个标识列的值的!我总觉得系统有东西记录着这东西!

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧