mysql auto_increment 与 联合主键冲突问题

mysql 5.5之前,auto_increment字段必须为主键,有的时候,这种自增字段,并没有多大的实际意义,而我们需要多个字段组成主键。

例如:

用户只能对购买的商品,进行一次评价,评价的自增ID,没什么用处,用户的ID和商品ID组成的联合主键,意义就大的多了。如果想保留auto_increment字段,就要使用高版本的mysql了。

mysql> ALTER TABLE `order` DROP PRIMARY KEY ,ADD PRIMARY KEY ( `user_id` , `order_id` ) ; 
 
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key 

联合主键,在大访问量的情况下,保重数据唯一性,也启到重要的作用。

时间: 2024-08-03 10:24:06

mysql auto_increment 与 联合主键冲突问题的相关文章

生产环境mysql主主同步主键冲突处理

收到短信报警,两台数据库都报slave同步失败了,先说明一下环境,架构:lvs+keepalived+amoeba+mysql,主主复制,单台写入, 主1:192.168.0.223(写) 主2:192.168.0.230 好吧,先show slave status \G看一下同步失败的具体报错吧 登录主2库查看: mysql> show slave status \G *************************** 1. row ***************************

mysql 忽略主键冲突、避免重复插入的几种方式

mysql 忽略主键冲突.避免重复插入的几种方式 方案一:使用 ignore 关键字 方案二:使用 replace into 方案三:ON DUPLICATE KEY UPDATE  方案一:使用 ignore 关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: insert ignore into table_name(email,phone,user_id) values('test9@163.com','99999','9999'),这

Mysql的联合主键

mysql的联合主键:用2个字段(或者多个字段,后面具体都是用2个字段组合)来确定一条记录,说明,这2个字段都不是唯一的,2个字段可以分别重复,这么设置的好处,可以很直观的看到某个重复字段的记录条数. 在mysql当中我们经常认为主键只能设置一个,那如果我们想设置两个呢?如下图: CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` varchar(25) DEFAULT NULL, `sess_id` varcha

mybatis多线程批量插入MySQL报主键冲突

问题描述 mybatis多线程批量插入MySQL报主键冲突 insert into SMS_DOWN_HISTORY(templateCode,activityCode,activityId,sendRoundId,arrangeDate,expireDate,messageId,mobile,requestId,senderId,depName,depId,flag,level,smsTemplateVar,systemName,mtime,ctime) values (#{item.temp

Hibernate(5)—— 联合主键 、一对一关联关系映射(xml和注解) 和 领域驱动设计

俗话说,自己写的代码,6个月后也是别人的代码--复习!复习!复习!涉及的知识点总结如下: One to One 映射关系 一对一单向外键(XML/Annotation) 一对一双向外键关联(XML/Annotation) 联合主键 一对一单向外键联合主键(Xml/Annotation) 一对一组件关联(XML/Annotation) 理解组件 领域驱动设计--自动生成数据库脚本 一对一关系的小结 一些出错问题的总结   自动生成数据库脚本 一般在项目开发过程中,我们的习惯是先建好数据库和表,然后

【HIBERNATE框架开发之四】HIBERNATE-ANNOTATION常用的注解归总&&ID的生成策略&&联合主键

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/hibernate/811.html 这篇主要讲解Hibernate中Annotation的常用注解和ID的生成策略以及联合主键三块:     首先介绍些常用的Annotation注解: 1.  当表名与类名不一致: @Table(name="数据库表名")        (javax.persistence)      如果类名与

Mysql设置自增长主键的初始值

alter table table_name auto_increment=n; 注意n只能大于已有的auto_increment的整数值,小于的值无效. show table status like 'table_name' 可以看到auto_increment这一列是表现有的值. 步进值没法改变.只能通过下面提到last_inset_id()函数变通使用 Mysql可以使用AUTO_INCREMENT来设定主键的值为自增长的,其默认值是1,如果想把它的初始值设置为1000,比较笨的办法是先插

duplicate-mysql存储过程报错,报的联合主键约束错误

问题描述 mysql存储过程报错,报的联合主键约束错误 Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '5RgwDTn5zeAoPM1yXxeRkm-YUseiccsUNQxcQeBPK3Td3' for key 'PRIMARY' ### The error may involve defaul

Mysql设置自增长主键的起始值

Mysql可以使用AUTO_INCREMENT来设定主键的值为自增长的,其默认值是1,如果想把它的初始值设置为1000,比较笨的办法是先插入一条记录并指定主键的值为999,然后delete改行记录,例如:  代码如下 复制代码 insert into test(pk) values(999); delete from test where pk = 999; 更好的方法是使用alter的方法来直接修改,例如:  代码如下 复制代码 alter table test AUTO_INCREMENT