我無法更新臨時表。這是我的查詢Temp Table排序規則衝突 - 錯誤:無法解決Latin1 *和SQL_Latin1之間的排序規則衝突*
CREATE TABLE #temp_po(IndentID INT, OIndentDetailID INT, OD1 VARCHAR(50), OD2 VARCHAR(50),
OD3 VARCHAR(50), ORD VARCHAR(50), NIndentDetailID INT, ND1 VARCHAR(50), ND2 VARCHAR(50),
ND3 VARCHAR(50), NRD VARCHAR(50), Quantity DECIMAL(15,3))
INSERT INTO #temp_po(IndentID, OIndentDetailID, OD1, OD2, OD3, ORD)
SELECT ID.IndentID, ID.IndentDetailID, ID.D1, ID.D2, ID.D3, ID.RandomDimension
FROM STR_IndentDetail ID WHERE ID.IndentID = @IndentID
UPDATE
t
SET
t.ND1 = CASE WHEN D.D1 = '' THEN NULL ELSE D.D1 END,
t.ND2 = CASE WHEN D.D2 = '' THEN NULL ELSE D.D2 END,
t.ND3 = CASE WHEN D.D3 = '' THEN NULL ELSE D.D3 END,
t.NRD = CASE WHEN D.RandomDim = '' THEN NULL ELSE D.RandomDim END,
t.Quantity = D.PurchaseQty
FROM
#temp_po t INNER JOIN @detail D ON D.IndentDetailID = t.OIndentDetailID
WHERE
t.IndentID = @IndentID
但它給錯誤
無法解析「Latin1_General_CI_AI」,並在相同的操作規則「SQL_Latin1_General_CP1_CI_AS」之間的排序規則衝突。
如何解決此問題?
我的tempdb
整理是Latin1_General_CI_AI
和我的實際數據庫整理是SQL_Latin1_General_CP1_CI_AS
。
作爲@StuartLC下面說,這是你的列排序規則(可能從數據庫繼承)和主之間的衝突,因爲tempdb的默認主數據庫的整理。最簡單的解決方案是將COLLATE DATABASE_DEFAULT附加到每個(n)char /(n)varchar數據類型,以便始終創建臨時表以匹配您正在使用的數據庫。 – Kahn