sql - 触发器从表中删除行
问题描述
我正在尝试为日志表中的记录超过一定数量的行创建一个触发器,我想开始将它们清除x数量的旧记录并在某个日期之前保留新记录。
当前查询(伪代码):
declare @date datetime
SET @date = 'certaindate'
CREATE TRIGGER PURGE_USERS ON UsersAD FOR DELETE
AS DELETE
FROM UsersAD WHERE ROWCOUNT(UsersAD) > x and updateDate < @date
GO
-- UPDATE: Might have to partition instead of delete.
我假设您明白我的意思,但我既不知道如何创建触发器以开始删除记录,也不知道确定何时删除记录的好方法。
感谢帮助,
谢谢。
解决方案
更好的策略可能是对表进行分区。分区优于delete
,因为你可以删除一个分区比删除一堆记录更有效。
您尤其不想在触发器中执行大量删除操作,因为表可能在插入期间保持锁定状态。您希望插入速度很快。. . 突然之间真的很慢。
通常,分区将用于保存固定时间段的数据。比如说,您可以为每周创建一个单独的分区,并保留最近 100 周的数据。
您可以在文档中了解有关分区的更多信息。
推荐阅读
- iis - 如何将 ngrok 用于 localhost 的子文件夹
- c++ - 尝试在 MS Visual Studio 代码中安装 boost 1_70 C++ 但得到“不存在此类文件”
- c - 从链表中删除元素时出现异常
- mongoose - 用 Schema 填充数组 mongoose 中的嵌套对象
- java - onMapLongClick() 不创建自定义标记
- php - 使用 GD 在图像上写入文本不起作用
- reactjs - expo-sqlite 不要将数据插入本机反应
- python - 如何在 Django 中打印元组的名称?
- image - Flutter:- 如何检查 Gif 是否加载
- c# - System.DllNotFoundException:'无法加载 DLL'libzkfp.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)'