在2005 SQLEXPRESS ,我有个数据库company,其中有个企业信息表(information),我想为这个表做个设定,就是循环覆盖,这个表的行数上限假定是50000行,当到了50001行时候自动覆盖第一行数据,50002行自动覆盖第二行数据,依此类推。该怎么弄,谢谢!

解决方案 »

  1.   

    insert的时候 做个触发器 超过50000,自动删除ID的最小的。
      

  2.   

    这样可能最方便如果information这张表没有自增长字段,那么加一个自增长id字段,如下:
    alter table information add [id] int IDENTITY (100, 1) NOT NULL 
    每次插入前进行判断:表中的记录条数和要插入的记录条数,两者之和是否大于50000
    1.不大于的化,直接插入(注意id是自增长字段,会自动赋值)
    2.大于的化,如两者之和=50100,那么删除50100-50000=100条,
    注意这100条应该是前100条,也就是id最小的100条
    3.插入记录语句如下:
    declare @sql varchar(8000)
    set @sql='if (select count(*) from company)+(select count(*) from 插入表)>50000
    delete from company where id in (select top ((select count(*) from company)
    +(select count(*) from 插入表)-50000) id from tb order by id)
      insert company select * from 插入表'
    --print(@sql)
    exec(@sql)