现用一数据表,要求里面的记录数可以由用户自由设定保留条数,并保留日期较近的.
  我现在使用的是插入触发器:
CREATE TRIGGER  INSERT_EVENT  ON dbo.LSMEventOpRecord
FOR INSERT 
AS
  
DECLARE @num  int
SELECT @num=EventHistoryNum FROM LSMSysAutoOperateParam 
SELECT   *    FROM 
(
       SELECT LSMEventOpRecord.*,uTmpBufferTable.dateMinRecord 
       FROM  LSMEventOpRecord   LEFT JOIN
                 (SELECT MIN(OperateTime) AS dateMinRecord FROM
   ⑴: (SELECT TOP 5000 OperateTime FROM LSMEventOpRecord ORDER BY OperateTime DESC) AS uTmpTable)  AS uTmpBufferTable  
               On 1 = 1
)AS   uDataTable
WHERE OperateTime<dateMinRecord   ORDER BY  OperateTime DESC问题是:(1)处选择时间最新的5000千条时,这个5000千条应该让用户来设定条数,不知道怎样来改好

解决方案 »

  1.   

    做个页面让用户输入保留的条数。在数据库中或者配置文件中保存。程序启动时,读入参数,保存到一个全局变量中(也可以在需要时读取)。Select top 5000 -> Select top @num;
      

  2.   

    lfchen(一条晚起的虫)说的对,当然也可以写到注册表中,这个方法对于window2000之后的系统应该说性能会更好些。当然你最好提供一个工具把你增加到注册表中的内容导出或导入,这样用户也不用因为重装操作系统而需要重新配置。
      

  3.   

    楼上两位菜鸟啊,SQL语句根本不允许Select top @num这样用的.只能用常数!
      

  4.   

    CREATE PROCEDURE dt_u
      @n char(10)
    AS
      set @n = '10';
      exec('Select top ' + @n + ' * From tbl_test')
    --------
    ??