1:如果用自增字段,是不可能达到楼主所述要求的。
2:
create trigger 名 on real 
for delete
As
   if (select count(*) from deleted) = (select count(*) from real)
     insert his select top 500 * from deleted 

解决方案 »

  1.   

    你不要设为自动增加字段,自己来控制
    这样你可以这样写触发器create trigger 名 on real 
    for delete
    As
       if (select count(*) from deleted) = (select count(*) from real)
        select top 500 IDENTITY(int,1,1) id,* into #temp from deleted
       
       insert his
       select * from #temp
     
    --这样写触发器,每次插入的ID都是1开始
      

  2.   

    create trigger 名 on real 
    for delete
    As
       if (select count(*) from deleted) = (select count(*) from real)
        select top 500 IDENTITY(int,1,1) id,* into #temp from deleted
       
       insert his
       select * from #temp   drop table #temp
      

  3.   

    我试了一下,没有写进his 表中。
      

  4.   

    如何能每次增加500个记录时,重新从1开始计数?多谢了!!
    标识字段不能做这样的效果,你不要用标识字段.直接用整型字段就行了.触发器:
    create trigger t_delete on Real
    for delete
    as
    if (select count(*) from deleted)=(select count(*) from real) --判断是否全部删除
    begin
       select id=identity(int,1,1),* into #tb from deleted
       insert into His select * from #tb where id in(select top 500 id from #tb order by id desc)
    end
      

  5.   

    我刚试了一下,错误如下:SQL无法使用SELECT INTO语句向表#'tb'中添加标识列,该表中已有继承了标识属性的列‘ID’,问题不知如何解决?
      

  6.   

    我在表His中设了一个字段ID,自动增加的,如何能每次增加500个记录时,重新从1开始计数
    answer:
    create table aa(
    a int identity(1,1) not null,
    b int)
    go
    create trigger tri_a
    on aa
    for insert 
    as
    begin
    declare  @b int
    select @b=@@identity
    if (@b=5)
    DBCC CHECKIDENT (aa, RESEED,0)
    end
    insert into aa select 2
    insert into aa select 2
    insert into aa select 2
    insert into aa select 2
    insert into aa select 2
    insert into aa select 2
    select * from aa
      

  7.   

    其实我们的答案早就解决了你的问题,只是你不懂使用而已首先你把id字段的自增属性删除掉,不要自增
    create trigger 名 on real 
    for delete
    As
       if (select count(*) from deleted) = (select count(*) from real)
        select top 500 IDENTITY(int,1,1) id,* into #temp from deleted
       
       insert his select * from #temp