小飛魚SQLserver 使用觸發器保留最新的十條數據(代碼)

使用觸發器解決只保留最新十條數據的問題,按條件進行過濾,多種數據保存在一個表中。

-- ================================================
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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章