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

SQL Server 暫存表「無識別屬性無法執行 SET」錯誤排查

     編輯:關於SqlServer

錯誤現象

表 '#TT' 沒有標識屬性。無法執行 SET 操作

問題重現

CREATE TABLE #TT (
    CourseId INT,
    UserId INT,
    ClassId INT
);

INSERT INTO #TT (CourseId, UserId, ClassId)
SELECT CourseId, UserId, ClassId FROM dbo.T_MyOrder;

根因分析

錯誤訊息提示「無識別屬性」,實際上是暫存表缺少主鍵,導致某些內部操作(如身分識別插入、觸發器、複寫等)無法執行。

解決方案

CREATE TABLE #TT (
    CourseId INT PRIMARY KEY,  -- 加上主鍵
    UserId INT,
    ClassId INT
);

INSERT INTO #TT (CourseId, UserId, ClassId)
SELECT CourseId, UserId, ClassId FROM dbo.T_MyOrder;

後續觀察

作者測試發現:加上 PRIMARY KEY 後不報錯,移除後也不報錯,推測可能與暫存表快取/重用機制或特定版本行為有關。

最佳實踐

  • 暫存表建議明確定義主鍵,避免隱性問題
  • 若欄位不適合做主鍵,可加 ID INT IDENTITY(1,1) PRIMARY KEY 代理鍵
  • 開發階段遇到詭異錯誤,優先檢查主鍵/約束/索引定義

總結

暫存表缺少主鍵可能觸發「無識別屬性」錯誤。明確定義 PRIMARY KEY 可解決。此類問題常與特定版本、暫存表快取、觸發器/複寫環境相關,養成良好建表習慣可預防。

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