本帖最后由 wdzczy 于 2013-08-09 19:54:58 编辑

解决方案 »

  1.   

    CREATE TABLE [dbo].[P_table](
    [FID] [int] IDENTITY(1,1) NOT NULL,
    [FTenNO] [varchar](50) NOT NULL,
    [FName] [varchar](50) NULL,
    [FTel] [varchar](50) NULL
    ) ON [PRIMARY]
    INSERT INTO P_table (FTenNO, FName,FTel) VALUES ('2013T256', '客户1','8654321') -------开始---------
    declare @newNo varchar(10),@i int,@s int
    select @newNo=max(FTenNO) 
    from P_table
    where FTenNO like '2013T%'
    set @s=cast(case when isnull(@newNo,'')='' then '0' else right(@newNo,3) end as int)+1
    set @newNo=stuff('2013T000',9-len(@s),len(@s),@s)
    INSERT INTO P_table (FTenNO, FName,FTel) VALUES (@newNo, '客户1','8654321') 
    -------结束----------
    --从开始到结束执行三次后,结果如下:/*
    1 2013T256 客户1 8654321
    2 2013T257 客户1 8654321
    3 2013T258 客户1 8654321
    4 2013T259 客户1 8654321*/
      

  2.   

    FTenNO 这个这字段只要格式固定,在插入时不需要传入参数.
    在插入前按上面的规则最到最新值就可以了,而且不容易出错.
      

  3.   


    if object_id('p_table')is not null
    drop table p_table
    go
    CREATE TABLE [dbo].[P_table](
        [FID] [int] IDENTITY(1,1) NOT NULL,
        [FTenNO] [varchar](50) NOT NULL,
        [FName] [varchar](50) NULL,
        [FTel] [varchar](50) NULL
    ) ON [PRIMARY]
    go
    create function df_series()
    returns varchar(20)
    as begin
    declare @number int,@reval varchar(20)
    set @number=1
    set @reval=''
    select @number=right(isnull(max(ftenNO),0),3)*1+1 from p_table
    set @reval='2013T'+right('0000'+rtrim(@number),3)
    return @reval
    end
    go
    alter table p_table add constraint df_p_table default dbo.df_series() for ftenno
    go
    INSERT INTO P_table ( FName,FTel) VALUES ( '客户1','8654321')
    go 20
    select * from p_table
      

  4.   


    大神你有考虑过,您代码的的第24行(帖子里)的插入语句,如果我的这个表有1000个字段你怎么处理这行语句?这么写肯定不现实,是不是应该select查询出来?整体的复制回去?求大神更新
      

  5.   


    大神你好,您有考虑过,您代码的的第18行(帖子里)的插入语句,如果我的这个表有1000个字段你怎么处理这行语句?这么写肯定不现实,是不是应该select查询出来?整体的复制回去?求大神更新,而且如果变成客户2了,1000列字段,那得累屎啊…… 哈哈
      

  6.   

    谢谢大神 的SQL ,剩下的我自己已经搞定了,哎。初学者 见笑见笑。改成 Insert into P_table(FTenNO,FName,FTel) select top 1 @newNo,FName,FTel from P_tablego 10  就可以了