歷為那一列已經設置成自動遞增列﹐所以id號是自動遞增的﹐不會從4開始。如果想從4開始﹐用個臨時表過渡數據處理﹑select id=identity(int,1,1),col1,col2 into tab from tb
delete from tb
insert into tb select * from tab
drop table tab

解决方案 »

  1.   

    处理这个:
    select id=identity(int,1,1),* into tb from tbs
    truncate table tbs
    insert into tbs select * from tb
    drop table tb
      

  2.   

    IDENTITY(属性)
    在表中创建一个标识列。该属性与 CREATE TABLE 及 ALTER TABLE Transact-SQL 语句一起使用。说明  IDENTITY 属性与 SQL-DMO Identity 属性不同,后者表现列的行标识属性。 
    语法
    IDENTITY [ ( seed , increment ) ]参数
    seed装载到表中的第一个行所使用的值。increment增量值,该值被添加到前一个已装载的行的标识值上。必须同时指定种子和增量,或者二者都不指定。如果二者都未指定,则取默认值 (1,1)。注释
    如果在经常进行删除操作的表中存在着标识列,那么在标识值之间可能会产生差距。如果这构成了问题,那么请不要使用 IDENTITY 属性。但是,为了确保未产生差距,或者为了弥补现有的差距,在用 SET IDENTITY_INSERT ON 显式地输入标识值之前,请先对现有的标识值进行计算。如果重新使用已删除的标识值,那么请使用示例 B 中的示例代码进行检查,以获得下一个可用的标识值。请用您的表名、标识列数据类型以及(该数据类型的)最大可允许值的数值 –1 替换 tablename、column_type 和 max(column_type) – 1。使用 DBCC CHECKIDENT 检查当前的标识值,并将其与标识列中的最大值进行比较。 当将 IDENTITY 属性与 CREATE TABLE 一起使用时,Microsoft® SQL Server™ 使用 CREATE TABLE 的 NOT FOR REPLICATION 选项替代标识列的自动增加。通常,SQL Server 给插入表中的每个新行指派一个值,该值比前面的最高值要大出某些增量。但是,如果新行是由另一个数据源复制过来的,那么标识值必须保持与其在数据源中完全相同。示例
      

  3.   

    --创建得到最大id的函数
    create function f_getid()
    returns int
    as
    begin
    declare @id int
    select @id=max(id) from tb
    set @id=isnull(@id,0)+1
    return(@id)
    end
    go--创建表
    create table tb(id int default dbo.f_getid(),name varchar(10))
    go--创建触发器,在删除表中的记录时,自动更新记录的id
    create trigger t_delete on tb
    AFTER delete
    as
    declare @id int,@mid int
    select @mid=min(id),@id=@mid-1 from deleted
    update tb set id=@id,@id=@id+1 where id>@mid
    go
      

  4.   

    没有必要的,int型一帮情况下够用了,如果数据实在多大不了改正bigint,这是足够大的了
      

  5.   

    delete from 你的表
    truncate table 你的表