0
我有以下表結構:如何解決「最大允許密鑰長度爲900字節」。
CREATE TABLE [dbo].[Signature]
(
[caption_id] [nvarchar](512) NOT NULL,
[signature_id] [int] NOT NULL
)
我想與下面的ALTER命令添加主鍵:
ALTER TABLE [dbo].[Signature]
ADD CONSTRAINT [pk__signatures]
PRIMARY KEY CLUSTERED ([caption_id] ASC,[signature_id] ASC);
當執行上述alter命令,我收到以下錯誤:
Ms 1944,Level 16,State 1,Line 1 索引'pk__signatures'未創建。該索引的密鑰長度至少爲1028字節。最大允許密鑰長度爲900個字節。 消息1750,級別16,狀態0,行1 無法創建約束。查看以前的錯誤。
任何人都可以幫助我解決這個問題嗎?
您想添加一個1024個+ 4字節長的密鑰?這是瘋狂。一般來說,使用varchar/nvarchar主鍵通常是個不錯的主意。你爲什麼需要這個?你怎麼了? – Luaan
http://blogs.msdn.com/b/bartd/archive/2011/01/06/optionsforindexedlookupsoflongvalues.aspx –
長度爲512的ID對我來說似乎有點多。寬字符的使用不會使它變得更好。正如Luaan已經指出的那樣:寬鍵效果不佳。你可以使用普通字符。這會給你一個516長度的關鍵。不漂亮但可行。或者添加一個包含您的ID的散列值的列。由於碰撞很少(具有良好的散列函數),您將保持唯一性屬性,但具有可接受的密鑰長度。 – Ronald