CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

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

楼主kfarvid(傻小子)2005-11-20 10:38:45 在 MS-SQL Server / 基础类 提问

我有一个表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 多值插入?
  • 标识递增量能不能设为一个随机的整数?

关键词

  • 字段
  • 系统
  • 插入
  • 触发器
  • 值
  • 增量
  • par
  • 标识列
  • 记录
  • identity

得分解答快速导航

  • 帖主:kfarvid
  • scmail81
  • winehero
  • jin2005

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo