0

我想插入後的Sql腳本觸發器,它可以刪除表中除最後兩行以外的所有行。 我想要類似的代碼在實體LINQ請... 我知道我的問題是便宜的專家,但我真的不知道如何編碼... 所以請幫我嗎?如何寫入觸發器(在插入後)刪除除了最後兩行之外的表中的所有行?

我使用此代碼,但在語法有錯誤:

select * from TblGold where id not in (
select id from TblGold 
order by id desc 
limit 2 
) 

的錯誤是:

Msg 102, Level 15, State 1, Line 4 Incorrect syntax near 'limit'. 

順便說一句,我知道如何編寫一個觸發器,但不知道怎麼刪除所有記錄除2最後一條記錄。 而不是Linq代碼。

回答

0
WITH cte 
AS 
(
SELECT ROW_NUMBER() OVER(ORDER BY Id DESC) AS RowNumber, * 
FROM TblGold 
) 
DELETE TblGold 
FROM 
    TblGold T 
    INNER JOIN cte ON cte.Id = T.Id 
WHERE RowNumber > 2 
+0

我希望它對所有的行不在特殊的列....我的表名是黃金.... – amin

+0

修改後的查詢。請注意數據庫中的訂單無法保證,因此您不得不指定您要訂購的列。如果您沒有此列,您可以創建一個計算列來存儲時間戳。檢查此鏈接:http://technet.microsoft.com/en-us/library/ms188751(v=sql.105).aspx –

相關問題