2 jn90zy jn90zy 于 2016.04.06 15:49 提问

mybatis数据表(mysql)的主键非自增长,如何插入数据(需插入主键)实现主键自增长? 1C

举例来说就是有表person,person有id(mysql数据库,主键,非自增),和name,pswd三个字段。如果是自增的情况,我们通常是这样处理

insert into person(name,pswd) values(#{name},#{pswd})

这种情况不许要插入主键,因为person表主键是自增长的。但如果主键不是增长的情况呢?如何处理。主键不是自增长就应该必须插入主键。
在步改动表结构的情况下!我能想到有两种方式可以解决,一个就是插入主键时实现自增长,比如第一次主键插1,第二次插2.这种方式不是很好。第二中就是在mapper.xml中是否可以实现向oracle序列那样进行自增长,小弟能力不够,还希望各位前辈能多多指教。如有更好的方法请指出。

5个回答

CSDNXIAOD
CSDNXIAOD   2016.04.06 16:14

mysql 主键id自增长,插入数据的方法
mysql 插入数据失败防止自增长主键增长的方法
表主键自增长Mybatis插入数据报错
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

xiatianlong_xtl
xiatianlong_xtl   2016.04.06 17:01

不自增长要么就查询最新数据的主键然后增加,要么就用uuid吧

u010030181
u010030181   Rxr 2016.04.06 18:30

如果你的键是从1开始到N的,那么直接算出有多少列,把这个列加1(看你表的情况是否要加),当作那个值插入,又或者你直接查找到该ID的最大值,然后+1,再进行插入

niaonao
niaonao   Rxr 2016.04.09 20:23

修改
table_name 你的表名 col_name列名
id int 你可以换成你的对应的属性及类型

将某列设置为主键,如果已为主键,跳过,看下一步
alter table table_name add primary key (col_name);
增加某列为自增
alter table table_name modify id int auto_increment;

niaonao
niaonao   Rxr 2016.04.09 20:24

修改
table_name 你的表名 col_name列名
id int 你可以换成你的对应的属性及类型

将某列设置为主键,如果已为主键,跳过,看下一步
alter table table_name add primary key (col_name);
增加某列为自增
alter table table_name modify id int auto_increment;

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!