開發時遇到的乙個問題
設計:
某業務資料庫設計包含兩張表,主表a和子表b,b有a的主鍵id作為業務外來鍵(未在mysql中建立外來鍵)。開發時設計刪除a表中的資料並未刪除b表中的關聯資料。
問題:
執行一段時間後發現新插入的a表資料會和b表未刪除資料關聯,即新插入的a的主鍵,在b中已存在外來鍵關聯。
原因:
mysql innodb 的自增序列計數器是存在記憶體中的,如果資料庫重啟服務,序列計數器會消失,mysql會在下次插入資料之前,查詢本表中該列的最大值,以該值初始化計數器,然後繼續自增。
解決:
還是老老實實刪除子表資料吧。。
ps:如果發生事物回滾等操作會導致序列跳值現象。mysql只保證自增,不保證連續。
參考資料:
ORACLE 自增序列
1 在plsql下先建立乙個專用的使用者 create the user create user user1 identified by user1 default tablespace users temporary tablespace temp profile default grant re...
MySQL 自增序列
5.7.23 select version 非主鍵形式的自增欄位 create table test3 id int auto increment not null,str varchar 2 key id 自增預設從1開始 truncat後,自增序列重新開始 設定自增開始值 同時 建立自增序列字段...
mysql 實現id自增序列 mysql自增id列
如果希望在每次插入新記錄時,自動地建立主鍵欄位的值。可以在表中建立乙個 auto increment 字段。mysql 使用 auto increment 關鍵字來執行 auto increment 任務。預設地auto increment 的開始值是 1,每條新記錄遞增 1。主鍵又稱主關鍵字,主關...