使用觸發器解決只保留最新十條數據的問題,按條件進行過濾,多種數據保存在一個表中。
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: XIAOFEIYU
-- Create date: 2019-3-26
-- Description: 保留指定條數數據,新插入數據刪除之前的大於n的條數
-- =============================================
Alter TRIGGER TG_X_PLC_get_data_keepN
ON X_PLC_get_data
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
Declare @eptId int;
Declare @comId int;
Declare @partId int;
Declare @type varchar(20);
Select @eptId=inserted.eptId, @comId=inserted.comId, @partId=inserted.partId, @type=inserted.mtype
from INSERTED;
Delete from X_PLC_get_data
where eptId=@eptId and comId=@comId and partId=@partId and mtype=@type
and id not in
(Select top 10 id from X_PLC_get_data
where eptId=@eptId and comId=@comId and partId=@partId and mtype=@type order by id desc);
END
GO