MySQL中因为unique key 非空唯一索引存在导致修改主键失败案例
2016-05-16 10:26
696 查看
研发在早期的设计中,由于设计方面的问题,导致在设计表结构的时候,有个表有非空唯一索引而没有主键
在InnoDB存储引擎中,如果没有主键的情况下,有非空唯一索引的话,非空唯一索引即为主键。
那么这就会有个问题存在
应用在更新表的时候,用了
用了ID作为条件,修改,高事务并发下,可能会同时发生这种事务,由于id并没有任何索引,故此,表会被全锁,也就是全表。那么如何避免这个问题。我们线上的数据
暂时还不是很大,故此
如果直接插入主键,会报错。
在InnoDB存储引擎中,如果没有主键的情况下,有非空唯一索引的话,非空唯一索引即为主键。
那么这就会有个问题存在
应用在更新表的时候,用了
update aaaa set xxx=xxx+(-1) where id=412 and xxx+(-1)>=0
用了ID作为条件,修改,高事务并发下,可能会同时发生这种事务,由于id并没有任何索引,故此,表会被全锁,也就是全表。那么如何避免这个问题。我们线上的数据
暂时还不是很大,故此
drop index idx_aaa_unique on goods_cost; alter table goods_cost add primary key(id); alter table goods_cost add constraint idx_aaa_unique unique (`xx`,`bb`);
如果直接插入主键,会报错。
相关文章推荐
- 347. Top K Frequent Elements
- 解决tableView separate 分割线不从最左边开始问题
- hibernate提供了强大的查询系统,query.setFirstResult,query.setMaxResults
- uva 11572 unique snowflakes——yhx
- uva 1152 4 values whose sum is zero ——yhx
- uva 1605 building for UN ——yhx
- 通过Service Builder改变了原数据库的主键,所有原有记录被删除。
- NUI四种提交数据方式c
- Hibernate动态条件查询(Criteria Query)
- HZAU 21——Arithmetic Sequence——————【暴力 or dp】
- this android sdk requires a...adt
- android:layout_centerInParent = "true"和 android:layout_gravity = "center"
- Android中UI的单位dp,sp和px使用问题
- 通过添加uiTOOLBAR制作毛玻璃效果
- 自定义UICollectionViewLayout(能滚动)需要实现的方法
- 重写UICollectoinViewFlowLayout需要重写的方法
- LeetCode 52. N-Queens II
- 定义一个UIEdgeInset全局变量
- 根据segue跳转
- 关于SqlSessionFactoryBuilder SqlSessionFactory SqlSession的作用范围