SET @variable = column = expression
平常我為了取得Update後的某欄位值,通常會在Update之後再下一次Select去取得該欄位,但其實不用那麼麻煩
在Update欄位值的同時可以將更新後的值,直接指派給變數喔,這用法好酷,我直到看到Assign a variable while changing the column – a little known trick才知道可以這樣用,但其實BOL早有寫了,這件事告訴我,我BOL沒仔細看啊,BOL說明截取如下
SET @variable = column = expression 會將變數設成與資料行相同的值。這有別於 SET @variable = column、column = expression,它會將變數設成資料行更新之前的值。也就是說,我可以在Update陳述式裡,同時將更新前後的值指派兩個不同的變數喔,不用再額外下Select取得,範例如下
use AdventureWorks
declare @BeforeUpdValue money
declare @AfterUpdValue money
update Sales.SalesOrderDetail
set @AfterUpdValue = UnitPrice = UnitPrice + 10, @BeforeUpdValue = UnitPrice
where SalesOrderID = 43659 and SalesOrderDetailID = 11
select @BeforeUpdValue as '更新前UnitPrice', @AfterUpdValue as '更新後UnitPrice'
要注意的這只適用更新單一資料列的情況,若更新的為多筆資料,就不太適合用了喔,會取到意想不到的值啊
0 意見:
張貼留言