在SQL Server中没有主键的现有表上创建主键

时间:2014-12-03 05:10:39

标签: sql sql-server primary-key

我正在尝试将现有列分配为没有主键的表中的主键(以及另一个表中的另一个表作为外键)。我试过这个: Altering a column: null to not null,它没有用。该列包含数字,文本和空值。

有人可以创建分步指南并与大家分享吗?

这是错误消息:

  

Msg 8152,Level 16,State 13,Line 2
  字符串或二进制数据将被截断。

如果您可以帮助解释错误消息,那就太棒了。

谢谢!

2 个答案:

答案 0 :(得分:1)

要将主键添加到现有表,您可以执行以下操作:

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

将添加一个新列并使用从1开始的唯一整数值​​自动填充它。要将外键添加到另一个表,请使用与上面类似的语法,但不要将列设为NOT NULL,直到您确定如何将其链接到现有主键 - 这是一个完全不同的问题。 / p>

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

我还没有对它进行测试,但这应该非常接近你所需要的。

答案 1 :(得分:0)

做一个

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

你完成了。当然,这要求YourColumnHere不可为空的列。