2010-10-03 178 views
0

任何人都可以告訴我,如何在將數據插入數據庫時​​更新記錄的列。 這是我想要的僞代碼。SQL Server 2008中的簡單觸發器

if(mytable.OriginalId == null) 
    mytable.OriginalId = Scope_Identity(); 
+0

http://msdn.microsoft.com/en-us/library /ms189799.aspx – 2010-10-03 09:59:29

+0

這裏有一個問題:AFAIK你只能在AFTER UDPATE觸發器上獲取生成的標識 - 所以你必須在表上執行另一個更新來更改'OriginalId' ...這是可行的,但我會不建議。在這種情況下,我會推薦第三個計算列,並使用表達式「COALESCE(OriginalID,ID)」。更簡單,不需要觸發器,它會給你預期的結果。 – rsenna 2010-10-03 15:55:16

回答

1

這將是矛盾的我認爲。無論是OriginalId設置還是未插入。

如果不是Scope_Identity()從哪裏得到它的價值?如果是來自另一列,那麼使用計算列會不會更好?

對不起,目前還不清楚的總體目標是什麼...你通常不會使用觸發器,特別是如果OriginalId是PK的一部分

+0

對不起,我應該提到。 PK是另一個名爲「Id」的列。 – mrtaikandi 2010-10-03 10:23:11

+0

謝謝。而且應該OriginalId總是和ID一樣?或不同? – gbn 2010-10-03 10:47:56

+0

如果用戶將其設置爲空,它應該與ID相同,否則它應該是用戶想要的任何內容。 – mrtaikandi 2010-10-03 11:43:06