我用sql server数据表存放一些信息,发现数据库增加速度很快。能否设置表的大小后,让它自动删除最先的数据。例如设置表容量为10000行,像队列一样,如果有新数据进来,就删除掉最先的数据。PS:不想用作业来实现,不知道数据库表是否有这个功能。谢谢~

解决方案 »

  1.   

    或者写个JOB定时跑,效率高点
      

  2.   

    --最多允许3条
    CREATE TABLE TB(COL INT)
    INSERT TB
    SELECT 1 UNION ALL
    SELECT 2
    GO
    CREATE TRIGGER TRIGGER_TB ON TB
    INSTEAD OF INSERT
    AS
      DECLARE @RC INT, @ROWCOUNT INT
      SET @ROWCOUNT=@@ROWCOUNT
      SET @RC=(SELECT COUNT(*) FROM TB)
      IF @ROWCOUNT+@RC>3
      BEGIN
        SET @ROWCOUNT=@ROWCOUNT+@RC-3
        SET ROWCOUNT @ROWCOUNT
        DELETE TB
        SET ROWCOUNT 0
      END
      INSERT TB
      SELECT * FROM INSERTED
    GOINSERT TB
    SELECT 3 UNION ALL
    SELECT 4
    SELECT * FROM TBDROP TABLE TB
    /*
    COL         
    ----------- 
    3
    2
    4
    */
      

  3.   

    可以尝试使用"数据复制"或"DTS",但本质上和作业区别不大。sql server系列暂时没有楼主要求的直接设置。
      

  4.   

    想问一下LZ,为什么不用作业呢????作业的方式应该是比较简便的方法就可以达到LZ的需求啊