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

解決 SQL Server「無法將 NULL 插入身分識別欄位」錯誤:啟用自動遞增

     編輯:關於SqlServer

錯誤訊息

Microsoft OLE DB Provider for SQL Server 錯誤 '80040e2f'
無法將值 NULL 插入欄位 'id',資料表 'web.dbo.dingdan';欄位不允許 NULL。INSERT 失敗。

根因

建立資料表時,id 欄位未設定為 身分識別欄位,導致插入時未自動產生值,嘗試寫入 NULL 而失敗。

解決步驟 (SSMS 圖形介面)

  1. 在「物件總管」右鍵資料表 →「設計」。
  2. 選取 id 欄列。
  3. 在「資料欄屬性」下方找到「識別規格」區塊。
  4. 將「是否為識別欄位」設為 是。
    (預設「識別種子」= 1、「識別增量」= 1,可依需求調整)。
  5. 儲存資料表(可能需取消「防止儲存需要重建資料表的變更」選項)。
設定身分識別欄位示意圖

T-SQL 補救腳本 (若無法用圖形介面)

-- 1. 新增暫存欄位
ALTER TABLE dbo.dingdan ADD new_id INT IDENTITY(1,1);
-- 2. 刪除舊欄位 (需先移除相依條件約束)
ALTER TABLE dbo.dingdan DROP COLUMN id;
-- 3. 重新命名
EXEC sp_rename 'dbo.dingdan.new_id', 'id', 'COLUMN';
-- 4. 加回主鍵
ALTER TABLE dbo.dingdan ADD CONSTRAINT PK_dingdan PRIMARY KEY (id);

預防檢查清單

  • 建表腳本務必包含 ID INT IDENTITY(1,1) PRIMARY KEY。
  • 使用 ER 模型工具正向工程時,確認 PK 映射為 Identity。
  • Code-First (EF) 需加 [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]。

啟用身分識別欄位後,插入資料無需指定 id,資料庫自動產生唯一遞增值,徹底解決 NULL 插入錯誤。

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