2011-01-25 24 views
0

我有一個表Table1我已經創建了一個插入/更新觸發器。該觸發器將Table1中的插入/更新記錄插入到Table1_history中。爲了測試觸發器是否被插入記錄Table1_history,我已插入一些測試數據到表1,我收到錯誤:幫助需要與「不能插入標識列的顯式值」錯誤

Cannot insert explicit value for identity column in table 'Table1_history' when IDENTITY_INSERT is set to OFF 

Table 1和Table1_history的模式相同,除了在Table1_history額外「inserted_on_date」字段是相同的。

我已經設置標識插入爲ON並且觸發器起作用。但是每次我需要在Table1中插入新記錄時,我都必須這樣做嗎?

回答

3

將IDENTITY INSERT ON放入觸發器本身,它只需要在將值推入table1_history時處於活動狀態,因爲那是問題所在。

或者,在Table1_history中,不要將pk字段設置爲IDENTITY,因爲您要提供Table1中的值,所以不需要這樣做。

+0

就是這樣。謝謝肯 – Animesh 2011-01-25 04:12:52

2

我假設你的'inserted_on_date'字段是一個日期時間。您應該能夠關閉身份插入,並將此列的默認值設置爲GETDATE(),這會將任何新插入的記錄設置爲服務器插入記錄時的日期時間。

2

你不提什麼數據庫,但我以爲這是SQL Server 2008的

的命令集的身份是特定的會話。所以是的,你需要每次發佈它。

相反,您應該從歷史記錄表中刪除標識規範。你不需要它。