我正在尝试将现有列分配为没有主键的表中的主键(以及另一个表中的另一个表作为外键)。我试过这个: Altering a column: null to not null,它没有用。该列包含数字,文本和空值。
有人可以创建分步指南并与大家分享吗?
这是错误消息:
Msg 8152,Level 16,State 13,Line 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
是不可为空的列。