2010-02-16 55 views
4

在扳機,我有這樣的代碼:在SQL Server 2008中從單行設置多個標量變量?

SET @var1 = (SELECT col1 FROM Inserted); 
SET @var2 = (SELECT col2 FROM Inserted); 

是否可以寫在上面一行?東西在概念上是這樣的:

SET (@var1,@var2) = (SELECT col1,col2 FROM Inserted); 

很明顯我試過上面的,沒有成功;我只是堅持第一種方法嗎?

即使可能,這是一個好主意嗎?

謝謝!

回答

8

是的,使用第一種方法。

或者......

SELECT 
    @var1 = col1 
    ,@var2 = col2 
FROM 
    Inserted; 
0

不,這是不可能的。 SET接受一個目標和值。據我所知。

2

但是,如果您希望在觸發器中設置這樣的變量值,它就是一個主要的紅旗。它通常意味着觸發器設計不佳,需要修改。這段代碼預計插入的只有一條記錄,這在所有情況下都不會成立。多記錄插入或更新將插入多個記錄,並且觸發器必須對此進行說明(請勿使用觸發器!!!)。在任何情況下都不應將觸發器編寫爲僅處理單記錄插入/更新或刪除。必須編寫它們來處理數據集。

實例從插入到另一個表,其中觸發器是table1的插入值:

CREATE TRIGGER mytrigger on table1 
AFTER INSERT 
AS 

INSERT table2 (field1, field2, field3) 
SELECT field1, 'test', CASE WHEN field3 >10 THEN field3 ELSE 0 END 
FROM inserted 
+0

你將有一個例子,我可以看看多記錄插入扳機? 謝謝。 – johansson

+0

我明白了,謝謝。那麼,我將如何處理觸發器? – johansson

+0

這是樣本觸發器,不知道我明白你現在要求什麼。 – HLGEM

相關問題