sql >> Database >  >> RDS >> Mysql

Zal MySQL verwijderde ID's hergebruiken wanneer Auto Increment wordt toegepast?

InnoDB stelt het auto_increment-veld opnieuw in wanneer u de database opnieuw start.

Wanneer InnoDB opnieuw opstart, vindt het de hoogste waarde in de kolom en begint het vanaf daar.

Dit gebeurt niet in MyISAM omdat het de laatst verhoogde id in de cache plaatst.

Bijwerken

Deze functie/bug bestaat al sinds 2003 en kan tot ernstige problemen leiden. Neem het onderstaande voorbeeld,

  1. Tabel t1 heeft een auto-inc primaire sleutel.

  2. Tabel t2 heeft een kolom voor de primaire sleutel in t1 zonder een externe sleutel "beperking". Met andere woorden, wanneer een rij in t1 wordt verwijderd, worden de overeenkomstige rijen in t2 verweesd.

  3. Zoals we weten met een herstart van InnoDB, kan een id kan opnieuw worden uitgegeven. Daarom kunnen verweesde rijen in t2 ten onrechte worden gekoppeld aan nieuwe rijen in t1.



  1. Mysql byte array-opslag

  2. Getallen opmaken met een min/plusteken in Oracle

  3. SQL:Waar tussen twee datums zonder jaartal?

  4. Combineer twee kolommen en voeg toe aan één nieuwe kolom