2016年5月18日 星期三

當 IDENTITY_INSERT 設為 OFF 時,無法將外顯值插入資料表 'TableName' 的識別欄位中

使用識別欄位(通常是自動編號)的資料表複製移動時,
出現當IDENTITY_INSERT 設為 OFF 時,無法將外顯值插入資料表 'TableName' 的識別欄位中

參照MSDN: SET IDENTITY_INSERT (Transact-SQL)

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }

於Insert Into 前先執行
SET IDENTITY_INSERT TableName On;


結果出現另一個錯誤訊息:位於資料表 TableName 的識別欄位其外顯值只有當使用了資料行清單且 IDENTITY_INSERT 為 ON 時才能指定。




原來,使用識別欄位的複製移動必須指定識別欄位,也就是不能太懶使用
Insert Into TableName Select col1, col2, col3 From srctable

必須指定欄位名稱
Insert Into (col1, col2, col3)  select col1, col2, col3  from srctable

避免造成遺憾,養成好習慣,於Insert Into之後補上這行
SET IDENTITY_INSERT TableName Off;

沒有留言:

張貼留言