如何在插入记录的时候得知自增量标识列的值?(谢谢)
我有一个表Item,里面有一个自增量的标识列ID,我想插入记录的时候,另外一列par_ID的值为ID列的值,我不知道如何实现! 问题点数:20、回复次数:10Top
1 楼scmail81(琳·风の狼(修罗))回复于 2005-11-20 10:49:45 得分 0
触发器!!Top
2 楼scmail81(琳·风の狼(修罗))回复于 2005-11-20 10:54:17 得分 10
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 ATop
3 楼kfarvid(傻小子)回复于 2005-11-20 11:07:13 得分 0
先谢谢了!
能不能不用触发器呢?因为,我想在插入前就知道那个表将要插入的记录的那个自增量标识列的值!Top
4 楼breeze19772002(★蚩尤★也来学编程^_^)回复于 2005-11-20 11:07:27 得分 0
使用触发器中的inserted表获取Top
5 楼scmail81(琳·风の狼(修罗))回复于 2005-11-20 11:14:08 得分 0
那在你插入之前:
select max(id)+标量增加值 from ItemTop
6 楼winehero(God helps those who help themselves.)回复于 2005-11-20 11:14:56 得分 5
插入前不可能知道这个自增列的值,只有插入后才知道。如果不想用触发器,那么只能
先插入,利用返回的系统常量@@identity获取刚插入的ID,然后Update字段par_ID为@@identityTop
7 楼kfarvid(傻小子)回复于 2005-11-20 15:11:52 得分 0
select max(id)+标量增加值 from Item--如果删除了很多最后的记录,那么这个方法不准哦!我就是不知道系统是如何知道插入的那个标识列的值的!我总觉得系统有东西记录着这东西!Top
8 楼zoubsky(与世隔绝的天空)回复于 2005-11-20 15:36:54 得分 0
你可以对表的结构做如下修改
示例:
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
*/Top
9 楼kfarvid(傻小子)回复于 2005-11-24 14:25:17 得分 0
楼上的这样做,能否修改par_id列的值的?Top
10 楼jin2005(小白)回复于 2005-11-24 14:53:29 得分 5
你可以这样:
declare @identity
insert into 表1 values(需插入的字段)
@identity=@@identity
insert into 表2 values(@identity,其他字段)Top
相关问题
- 如何得到插入行的标识列的值
- 表A中有自动增量列,插入一条记录时如何快捷地返回自动增量值?
- 急,求问各位高手:怎么获取插入数据的标识值?
- 有没有办法知道下一个插入的标识字段的值
- 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'TThis_Sort' 中的标识列插入显式值。
- {"当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'countUnit' 中的标识列插入显式值。"}
- 求救:当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'zdry' 中的标识列插入显式值。
- 我向表里插入一条纪录,表的一个字段是标识种子,我怎么知道插入的这条纪录的标识种子字段的值呢!?
- insert 多值插入?
- 标识递增量能不能设为一个随机的整数?




