首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server IDENTITY 欄位跨表匯入技巧:SET IDENTITY_INSERT 與顯式欄位列表

     編輯:關於SqlServer

當目標表定義了 IDENTITY(1000,1) 且含 NOT FOR REPLICATION 選項時,直接 INSERT INTO target SELECT * FROM source 會報錯:「當使用了列列表並且 IDENTITY_INSERT 為 ON 時,才能為表中的標識列指定顯式值。」

解決步驟:

  1. 開啟身份插入:SET IDENTITY_INSERT book ON;
  2. 必須顯式指定欄位列表(含身份欄),不能用 SELECT *:
    INSERT INTO book (書號, 書名, 出版社, ...) SELECT 書號, 書名, 出版社, ... FROM book1;
  3. 關閉身份插入:SET IDENTITY_INSERT book OFF;

核心結論: NOT FOR REPLICATION 表示複寫時不遵循 IDENTITY 規則,但手動跨表匯入數據時,仍需同時滿足兩個條件:IDENTITY_INSERT = ON 且 顯式列出所有欄位名稱。否則引擎無法確認你是否有意保留來源身份值,拒絕隱式插入。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved