我想在沒有主鍵的表中將現有列分配爲主鍵(以及另一個表作爲外鍵)。我試過這個: Altering a column: null to not null,它沒有工作。該列包含數字,文本和空值。在沒有主鍵的現有表上創建主鍵在SQL Server中
有人可以創建一個分步指南,並與大家分享嗎?
這是錯誤消息:
消息8152,級別16,狀態13,行2
字符串或二進制數據將被截斷。
如果你能幫助解釋錯誤信息,那將會很棒。
謝謝!
我想在沒有主鍵的表中將現有列分配爲主鍵(以及另一個表作爲外鍵)。我試過這個: Altering a column: null to not null,它沒有工作。該列包含數字,文本和空值。在沒有主鍵的現有表上創建主鍵在SQL Server中
有人可以創建一個分步指南,並與大家分享嗎?
這是錯誤消息:
消息8152,級別16,狀態13,行2
字符串或二進制數據將被截斷。
如果你能幫助解釋錯誤信息,那將會很棒。
謝謝!
一個主鍵添加到現有的表,你可以這樣做:
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])
我還沒有測試過,但應該是非常接近你所需要的。
我在我想用作主鍵的列中找到了10個空值。不要以爲我可以放棄這些。創建一個新列是現在唯一的選擇嗎?感謝您的回答! – WHZW 2014-12-03 12:55:11
如果您要使用的列有任何重複值或空值,那麼您將無法使用它。主鍵必須是非空且唯一的。 – 2014-12-03 20:05:54
只是做一個
ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable
PRIMARY KEY CLUSTERED (YourColumnHere)
就大功告成了。這當然要求YourColumnHere
列是不可空列列。
我在我想用作主鍵的列中找到10個空值。 – WHZW 2014-12-03 12:55:36
您是否已經有了一個要作爲主鍵(它具有唯一值並且沒有空值)的列或者是否需要一個新列?順便說一句,你不想按照你提供的鏈接中的步驟。 – 2014-12-03 05:27:57