任何人都可以告訴我,如何在將數據插入數據庫時更新記錄的列。 這是我想要的僞代碼。SQL Server 2008中的簡單觸發器
if(mytable.OriginalId == null)
mytable.OriginalId = Scope_Identity();
任何人都可以告訴我,如何在將數據插入數據庫時更新記錄的列。 這是我想要的僞代碼。SQL Server 2008中的簡單觸發器
if(mytable.OriginalId == null)
mytable.OriginalId = Scope_Identity();
這將是矛盾的我認爲。無論是OriginalId設置還是未插入。
如果不是Scope_Identity()
從哪裏得到它的價值?如果是來自另一列,那麼使用計算列會不會更好?
對不起,目前還不清楚的總體目標是什麼...你通常不會使用觸發器,特別是如果OriginalId是PK的一部分
對不起,我應該提到。 PK是另一個名爲「Id」的列。 – mrtaikandi 2010-10-03 10:23:11
謝謝。而且應該OriginalId總是和ID一樣?或不同? – gbn 2010-10-03 10:47:56
如果用戶將其設置爲空,它應該與ID相同,否則它應該是用戶想要的任何內容。 – mrtaikandi 2010-10-03 11:43:06
http://msdn.microsoft.com/en-us/library /ms189799.aspx – 2010-10-03 09:59:29
這裏有一個問題:AFAIK你只能在AFTER UDPATE觸發器上獲取生成的標識 - 所以你必須在表上執行另一個更新來更改'OriginalId' ...這是可行的,但我會不建議。在這種情況下,我會推薦第三個計算列,並使用表達式「COALESCE(OriginalID,ID)」。更簡單,不需要觸發器,它會給你預期的結果。 – rsenna 2010-10-03 15:55:16