如何写入触发器(插入后)以删除除最后两行之外的表中的所有行?

时间:2013-12-10 09:54:15

标签: sql-server linq stored-procedures triggers linq-to-entities

插入后我想要一个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'.

顺便说一句,我知道如何编写触发器但不知道如何删除除最后一条记录以外的所有记录。 并且没有Linq代码。

1 个答案:

答案 0 :(得分: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