2014-12-03 50 views
-1

我想在沒有主鍵的表中將現有列分配爲主鍵(以及另一個表作爲外鍵)。我試過這個: Altering a column: null to not null,它沒有工作。該列包含數字,文本和空值。在沒有主鍵的現有表上創建主鍵在SQL Server中

有人可以創建一個分步指南,並與大家分享嗎?

這是錯誤消息:

消息8152,級別16,狀態13,行2
字符串或二進制數據將被截斷。

如果你能幫助解釋錯誤信息,那將會很棒。

謝謝!

+0

您是否已經有了一個要作爲主鍵(它具有唯一值並且沒有空值)的列或者是否需要一個新列?順便說一句,你不想按照你提供的鏈接中的步驟。 – 2014-12-03 05:27:57

回答

0

一個主鍵添加到現有的表,你可以這樣做:

ALTER TABLE yourTableName ADD yourColumnName INT NOT NULL PRIMARY KEY IDENTITY(1, 1) 

這將增加一個新的列,並自動以獨特的整數值來填充它從一開始。要將外鍵添加到另一個表中,請使用與上述類似的語法,但在您已經計算出如何將其鏈接到現有主鍵之前,不要將該列設置爲NOT NULL,這是一個完全不同的問題。

ALTER TABLE yourOtherTable ADD yourFKColumnName INT WITH CONSTRAINT [FK_SensibleForeignKeyName] FOREIGN KEY ([yourFKColumnName]) REFERENCES yourTableName([yourColumnName]) 

我還沒有測試過,但應該是非常接近你所需要的。

+0

我在我想用作主鍵的列中找到了10個空值。不要以爲我可以放棄這些。創建一個新列是現在唯一的選擇嗎?感謝您的回答! – WHZW 2014-12-03 12:55:11

+0

如果您要使用的列有任何重複值或空值,那麼您將無法使用它。主鍵必須是非空且唯一的。 – 2014-12-03 20:05:54

0

只是做一個

ALTER TABLE dbo.YourTable 
ADD CONSTRAINT PK_YourTable 
PRIMARY KEY CLUSTERED (YourColumnHere) 

就大功告成了。這當然要求YourColumnHere列是不可空列列。

+0

我在我想用作主鍵的列中找到10個空值。 – WHZW 2014-12-03 12:55:36