我正在嘗試使用sql表來實現一個FIFO隊列。從加入時刪除CTE
我有以下的SQL(修改發佈),加入和參數的使用對於這個過程的工作方式很重要。
With cte as (
select top(1) q.* from queue q with (readpast)
inner join MyTable a on q.id = a.myTableID AND myTable.procID = @myParam
order by q.Data asc
)
delete from cte
output
deleted.ID,
deleted.col1
運行此語句返回一個錯誤「視圖或函數‘CTE’不可更新,因爲修改會影響多個基表。」
我明白爲什麼會拋出錯誤,但我無法弄清楚是如何解決它的。任何意見將不勝感激!
這正是我正在尋找的,謝謝! – Jay
對於Kieninger提供的示例,這種方法的好處在於,它提供了一種構建DELETE命令的一致方法,您可以在其中首先測試SELECT的結果以查看cte中的DELETE行將影響哪些行。 –