sql 表中的列与现存的主键或unique约束不匹配

     今天在更新项目时需要修改数据库中表的主键,结果报出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语法如下:

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值