我无法更新临时表。这是我的查询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