MySQL自增列id 插入的值大於id的自增值

2021-10-05 14:24:41 字數 501 閱讀 3992

從oracle切換到阿里雲; 雲下的oracle資料需要同步到polardb(mysql8),雲上的新系統(rds--mysql5.7)資料也要同步到polardb的同一張表裡;

rds庫中,有自己的id自增列, 同步到polardb上使用rds自己生成的值(不使用polardb的id自增值);

oracle資料沒有id列,通過polardb的id自增列自動生成值;

因此為了避免id衝突,將rds的id自增列的起始值,從5億開始,這樣polardb庫中5億以下的值就留給oracle做資料同步(反正2、3個月以後,oracle就下線了,沒有新的資料進來了);

但是當rds同步到polardb後,發現polardb的id自增列從5億多開始繼續下去了,而不是原來設想的在小數字端不斷自增;這樣就發生了oracle同步來的資料,和rds同步來的資料發生覆蓋現象;

看來系統為了保證id自增列不發生衝突,如果插入確定值大於auto_increment值,則自動將auto_increment值設定成插入的確定值(+1);

插入資料返回自增id值

1 先查詢自增id的值,然後在插入資料,可能存在插入重複的情況 2 使用returning子句 必須在儲存過程中使用 delete操作 returning返回的是delete之前的結果 insert操作 returning返回的是insert之後的結果 update操作 的returning語句是返...

mysql 自增列的建立

1.建表時就建立自增列 create table test id int auto increment primary key,name varchar 20 not null,password varchar 20 not null insert into test values null,aa ...

mysql插入資料,獲取最新插入的ID(自增列)

在mysql中,使用auto increment型別的id欄位作為表的主鍵。通常的做法,是通過 select max id from tablename 的做法,但是顯然這種做法需要考慮併發的情況,需要在事務中對主表以 x鎖 待獲得max id 的值以後,再解鎖。這種做法需要的步驟比較多,有些麻煩,...