mybatis如何实现序列自增长

1、首先我们看一下如何在mysql、sqlserver、oracle表中创建同一个学生的主键。
MENT、Student_Namevarchar(10)NOTNULL、Student_Ageint(2)NOTNULL);2.二);MARYKEY,Student_Namevarchar2(10)NOTNULL,Student_Agenumber(2)NOTNULL);RMENTBY1NOMAXVALUENOCYCLECACHE10;insertintoStudentvalues(student_sequence.nextval,aa',20);如果使用触发器createorreplacetriggerstudent_triggerbeforeinsertonstudentforeachrowbeginselectstudent_sequence.nextvalinto就更简单了:new.student_idfromdual;结束student_trigger;由神谕完成。
看了一下,Oracle的自增主键比mysql、sqlsever还要复杂。
数据库将完成你想要的。
但是在Oracle中,由于增加了以下概念,如果不使用触发器,Oracle是如何实现自增主键的呢?selectstudent_sequence.nextvalfromdualinsertintostudent(student_id、student_name、student_age)值(#{student_id}、#{Student_name}、#{Student_age}或insertintoTBL_ZONE(ID,NAME)值(SEQ_ZONE.NEXTVAL,#{name,jdbcType=VARCHAR}2、MyBatis自增主键的两种获取方法方法一:insertintoperson(name,pswd)values(#{name},#{pswd}方法2:selectLAST_INSERT_ID(insertintoperson(名称,pswd)值(#{名称},#{pswd}插入前实体id属性为0;

数据库实践丨使用MTK迁移Mysql源库后主键自增列导致数据无法插入问题

摘要:用户使用Mogdb2.0.1版本进行业务线上测试,发现插入数据时,应用日志提示主键冲突。
用户自查业务SQL没有问题。
接到通知后,他挥手去处理故障。
故障背景:用户使用Mogdb2.0.1版本进行业务在线测试。
插入数据时出现主键冲突日志提示。
自检查业务SQL后,立即处理故障。
故障描述及根本原因分析:查看数据表id列,发现primarykey存在,将sequencer设置为自增主键替换。
怀疑是id值超过了sequencer的最大值,导致失败。
通过检查id列的最大值和序列化器的最大值,确认max(id)为474,序列化器的最大值为44。
同时发现对应的id值不存在file_table表。
确认失败原因是主键列保存的值超出了序列化器。
range,导致序列化器nextval小于主键列值,造成主键冲突。
用户确认他使用了insertinto语句插入测试数据。
故障排除流程:使用语句重置定序器的currval。
通知用户重启应用进行测试,故障消失。
故障总结分析:MTK进行数据迁移时,如果源数据库是MySQL,会根据数据表中是否存在自增主键来建立定序器。
但手动执行gs_dump或insertinto操作时,指定主键列值不会更新序列化器的currval,导致常规操作后出现主键冲突问题。
解决方案是在数据插入后手动重置sequencercurrval,使其指向当前主键最大值。
关注最新技术动态,第一时间了解华为云信息。