今天在更新项目时需要修改数据库中表的主键,结果报出sql 表中的列与现存的主键或unique约束不匹配。
表LN003075原有主键,唯一索引,其中
原有主键字段是:[MCLASS_ID],
[BCLASS_ID],
[SYSTEM_ID]
唯一索引是: [BCLASS_ID],
[SYSTEM_ID]
跟表LN003078有关系:
FK_STYLE_BCLASS FOREIGN KEY
(
BCLASS_ID,
SYSTEM_ID
) REFERENCES dbo.LN003075
(
BCLASS_ID,
SYSTEM_ID
)
这里, 表LN003075的主键与唯一索引显然是不合理,一个表应该只有一个唯一索引。于是要更改主键为:
[BCLASS_ID],
[SYSTEM_ID]
去除原有的唯一索引。
思路是:先去除与表LN003078的关系,然后删除主键,唯一索引,接着重新新主键,最后重建与表LN003078的关系。
由于粗心,写关系的时候弄成了
FK_STYLE_BCLASS FOREIGN KEY
(
SYSTEM_ID,
BCLASS_ID
) REFERENCES dbo.LN003075
(
SYSTEM_ID,
BCLASS_ID
)
在重建关系的时候报出sql 表中的列与现存的主键或unique约束不匹配。这个原因就是因为没有与主键的次序一致造成的,应该是:
FK_STYLE_BCLASS FOREIGN KEY
(
BCLASS_ID,
SYSTEM_ID
) REFERENCES dbo.LN003075
(
BCLASS_ID,
SYSTEM_ID
)
好了。贴出所有SQL语法如下: