Mysql
 sql >> база данни >  >> RDS >> Mysql

Ще използва ли MySQL повторно изтрити идентификатори, когато се приложи автоматично увеличение

InnoDB нулира полето auto_increment, когато рестартирате базата данни.

Когато InnoDB се рестартира, той намира най-високата стойност в колоната и след това започва от там.

Това няма да се случи в MyISAM, защото той кешира последния увеличен идентификатор.

Актуализиране

Тази функция/бъг съществува от 2003 г. и може да доведе до сериозни проблеми. Вземете примера по-долу,

  1. Таблица t1 има първичен ключ за автоматично включване.

  2. Таблица t2 има колона за първичен ключ в t1 без "ограничение" за външен ключ. С други думи, когато един ред се изтрие в t1, съответните редове в t2 остават сираци.

  3. Както знаем с рестартирането на InnoDB, идентификаторможе бъде преиздадена. Следователно осиротелите редове в t2 могат да бъдат фалшиво свързани с нови редове в t1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свържете се с отдалечена база данни MySQL чрез SSH с помощта на Java

  2. MySQL DATEDIFF() срещу TIMESTAMPDIFF():Каква е разликата?

  3. Как да променя всички празни низове на NULL в таблица?

  4. Защо не мога да използвам променлива като име на таблица в съхранена процедура?

  5. Дълбочина в MYSQL и дървета на таблици за затваряне