我需要你的帮助......,请帮帮我
我想将新主键添加到已有3列作为复合主键的现有表中。但是,我不想丢弃旧的主键,因为有很多记录,旧的主键也与其他表有关系
当我使用此查询时:
alter table hem154
add indexNO uniqueidentifier default newid()
alter table hem154
add CONSTRAINT pk_hem154_indexNo PRIMARY KEY (PK_indexNO)
注意:
我收到此运行时错误:
Msg 1779,Level 16,State 0,Line 1
表'hem154'已经定义了一个主键。
Msg 1750,Level 16,State 0,Line 1
无法创建约束。查看以前的错误。
请帮帮我,我该怎么办?
由于
答案 0 :(得分:1)
每个表只能有一个主键。您可以添加第二个表格,将新PK映射到旧PK,也可以删除旧PK并添加新PK。删除PK不会丢弃列,它只是停止使用它们作为复合键。任何依赖旧密钥的表都应该更新,以支持您决定的任何答案。
答案 1 :(得分:0)
删除所有主键并再次添加所有主键
ALTER TABLE hem154
DROP PRIMARY KEY,ADD PRIMARY KEY (col1,col2,indexNO);
答案 2 :(得分:0)
首先DROP存在PRIMARY KEY并添加新的复合PRIMARY KEY。
ALTER TABLE Table1
DROP CONSTRAINT PK_Table1_Col1
GO
然后尝试使用您的代码
答案 3 :(得分:0)
没有简单的方法可以做到这一点。根据您的问题,我了解您要在现有主键上添加一个附加列。如果它们具有现有关系,那么在不首先丢弃这些FK约束的情况下就不可能这样做。即使你这样做,你也无法再次重新建立那些FK约束,因为你修改了PK。
如果您不需要重新建立这些FK关系,那么您可以这样做:
但是,如果你不能放弃现有的FK约束,那么恐怕这是不可能的
答案 4 :(得分:0)
在Microsoft SQL Server Management Studio上: