2014-04-07 60 views
0

我在表(MyTable)中有一個計算列。我也有一個觸發器。 的trigegr確實像計算列 - 觸發器而不是插入

INSERT INTO MyTable 
SELECT * FROM inserted 

和有問題:在「插入」表中有計算列,所以列定義不匹配,因爲你不能將值插入計算列。

是否有一些自動解決方案,或者我必須聲明所有列的名稱 - 我寧願不這樣做,因爲我將不得不改變每次我改變表的觸發器。

+1

'EXISTS'檢查外,'SELECT *'只是一個懶惰的習慣,你應該離開。您應該*知道*您感興趣的列,並且您不應該因爲想減少鍵入而強制系統執行*更多*工作。有些工具可以幫助您填充這些列表(例如,如果您在SSMS的對象瀏覽器中有一個表格visibile,並且將'Columns'文件夾拖動到查詢窗口中,那麼它將自動擴展到所有列名稱中) –

回答

0

不,你必須按名稱列出列,或使用動態SQL,我會建議。

無論如何,在產品代碼中使用SELECT *並不是一個好習慣。