在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
是不可空列。
上一篇: create primary key on existing table without primary key in SQL Server