打印本页〗〖打印选项
ASP:自动删除 Access 数据库中符合条件的若干条记录以外的记录
  举个例子:网站会员系统,会员用户登录时会自动记录登录日志,时间长了,记录就多了,一般的会员用户可能不一定会去删除这些登录日志,这时可以用让程序来实现自动清除,代码如下:
<%
  dim ACMA
  set ACMA=Server.CreateObject("ADODB.Connection")
  ACMA.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("数据库名称.mdb")
  ACMA.Execute("delete from 表名 where ML_Member=10000000 and ML_ID not in (select top 10 ML_ID from 表名 where ML_Member=10000000 order by ML_ID desc)")
%>

  把“表名”替换为数据库中的某个表的具体名称,ML_Member 是指定会员账号的编号,ML_ID 是“自动编号”的字段名,select top 10 的 10 是指保留的记录,10 以外的记录都会被删除。by ML_ID desc 是按“自动编号”的降序排列,这样就能把最新的记录保留,把较早的记录删除。如果不需要指定会员账号的编号,也不需要按降序排列,只要以下代码即可:
  ACMA.Execute("delete from 表名 where ML_ID not in (select top 10 ML_ID from 表名)")
  如果要改成按时间间隔来删除,比如,删除 10 分钟以前的记录,代码如下:
  ACMA.Execute("delete from 表名 where DateDiff(""n"",MR_DateTime,now())>10")
  MR_DateTime 是字段名,是该条记录添加时的时间,now() 是当前时间,两个时间对比,如果超过 10 分钟,就自动删除记录。



文章作者:啊估整理