-- 将自动增长字段设置为主键 create table t1 (id int auto_increment Primary key,sid int);-- 将自动增长字段设置为非主键,注意必须显式添加Unique键 create table t2 (sid int primary key,id int auto_increment Unique);-- **将自动增长字段设置为非主键如果未添加唯一索引将会报错**,如...
提交事务A后,主库中数据为1、2、4。而同步到从库后执行插入语句,插入的数据为1、2、3,主从数据不一致。解决思路:避免从库自动得到自增列ID。解决办法:插入时指定ID;将binlog_format设置为ROW。八、last_insert_id()问题 查询上一次递增ID的值:select last_insert_id();当在不同事务中各...
通常的做法,是通过“select max(id) from tablename”的做法,但是显然这种做法需要考虑并发的情况,需要在事务中对主表加以“X锁“,待获得max(id)的值以后,再解锁。这种做法需要的步骤比较多,有些麻烦,而且并发性也不好。有没有更简单的做法呢?答案之一是通过select LAST_INSERT_ID()这个操作。
存储方式:MyISAM引擎:将当前自增值存储在表数据文件中。InnoDB引擎:将当前自增值存储在内存中,并在MySQL重启时从表中查询自增列最大值+步长作为当前自增值。InnoDB引擎:自增值变动记录存储在redo log中,重启后通过redo log恢复之前的自增值。自增值变化:未指定或指定为0/null:插入时将表当前自增...
建议使用uuid作为主键,select replace(uuid(),'-','');insert的时候用这个replace(uuid(),'-','')