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

我试图在没有主键的表中分配一个现有的列作为主键(而另一个表作为外键)。 我试过这个:改变一列:null为非null,并没有工作。 该列包含数字,文本和空值。

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

这是错误消息:

Msg 8152,Level 16,State 13,Line 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])

我没有测试过它,但它应该非常接近你所需要的。


只是做一个

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

你完成了。 这要求YourColumnHere不可空列。

链接地址: http://www.djcxy.com/p/76285.html

上一篇: create primary key on existing table without primary key in SQL Server

下一篇: How to restrict Blank values in Primary Key column