由于主键id是自动增长但操作数据有删除行所以id不一定是连号,请问能不能用1条sql插入语句写出要求该插入行的1个列值是当前+该主键id。谢谢

解决方案 »

  1.   

    select convert(varchar(8),getdate(),112) + substring(convert(varchar(5), max(id)), m, n)
      

  2.   

    存储过程吧。
    insert into table(abc) values('@@identity+getdate()')
      

  3.   

    举个例子说明一下:
    id是自动增长如果当前最大即最后插入是id值是1但是由于操作数据2、3、4已被删除了所以现在要插入的id将是5那么取id最大值和通过存储过程付变量也算不出id值,如果不能在当前插入语句取该id值就只能先插再取id再更新该字段往复多操作了2次数据库
      

  4.   

    应该只能用存储过程实现,insert之后将 @@identity做为返回值
      

  5.   

    试了下@@identity可以返回上一个自动增长的值那么我再加1就是当前插入的id值了
      

  6.   

    convert(varchar(8),getdate(),112) +(@@identity+1)的值是2个整型值相加了,我需要获得字符串相加应该怎么写?谢谢
      

  7.   

    oracle出来方法
    1、建立一个序列
    2、取当前日期注意格式,如格式化为 20070608
    3、取序列值,然后格式化即:如序列总长度位 8 ,取得的值为23 ,格式化 后为 00000023
    4、将格式化的序列值与日期拼接得到 2007060800000023sqlserver应该也是一样的
      

  8.   

    ok了,还真是笨呵呵,把@@identity+1转成varchar就好了
    INSERT INTO table
          (name)
    VALUES (CONVERT(varchar(8), GETDATE(), 112) + CONVERT(varchar, @@IDENTITY + 1))