mysql中使用联合主键并设置非主键自增

mysql中使用联合主键并设置非主键自增

数据库里有三个三字段,id , wire_id, station_id。

其中wire_id+station_id合一起不允许重复(单独的某一个允许重复)

并且id需要实现自增

### 尝试一:(未成功)

  • 将wire_id和station_id设置为联合主键
  • 想将id设置为自增

这里设置id自增的时候就会报错,因为只允许索引(包括主键)的才能设置为自增

所以需要先将id单独设置为唯一索引才行。

尝试二:(未成功)

  • 将wire_id和station_id设置为联合主键
  • 给id设置唯一索引,实现自增

问题所在:这个方法可以实现wire_id+station_id唯一存在,但是对于id的自增,会有问题

假如现在表里有三行id 为1~3,现在插入了个id=4,然后又将id=4的这个立马删除,

接下来插入一行数据它就从id=5开始算了,不是4了。这个就是问题所在。

意思就是:

我原来表里有100行,现在将后99行全删除,然后再插入一行,这行的默认id是从101开始的!!!是不符合我们要求的

大佬方法:成功了

  • 将id设置为主键!!!!
  • 将wire_id+station_id两个加一起,做成唯一索引!!!!

image-20210616232505994

image-20210616232518699

  • 完美解决!!!!!!

如果你的要求只有wire_id+station_id合一起不允许重复(单独的某一个允许重复)

,没有后面的还要实现自增的话,直接将两个设置为主键就行,直接用navicat在两个字段上面分别点个主键就行。如果你还要实现自增这个要求的话,就使用我的方法三。

image-20210616232754333

个要求的话,就使用我的方法三。

[外链图片转存中…(img-NSLhpmBo-1623857349278)]

之前想的一直是让两个一起的设置为主键,忘记了将两个一起的设置为索引也可以让它唯一。。!!!!

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值