sql >> Database teknologi >  >> RDS >> Mysql

MySQL auto-inkrementer på en ikke-primær nøgle

Jeg var nødt til at håndtere et lignende problem ved at bestille et kategoritræ unaturligt. Hvis du indsætter alle rækkerne for et id ad gangen, kan du gøre sådan noget for hvert subId:

SET @seq = 0;
INSERT INTO test
  (id,  subId,            text) VALUES
  (_id, @seq := @seq + 1, 'Some text')
;

Hvis du skal "føje" en række til et id, kan du sætte @seq med

SELECT IFNULL(MAX(subId), 0) INTO @seq FROM test WHERE id = _id;

Dette vil selvfølgelig kræve styring af id af applikationen og ikke mySQL.

Du kan gøre det samme som den sidste kodeblok for også at få det næste tilgængelige id.



  1. Sporing af bannervisninger - Databasedesign

  2. Hvordan installeres Python MySQLdb-modulet ved hjælp af pip?

  3. Stor primær nøgle:1+ milliard rækker MySQL + InnoDB?

  4. Hvilken version af MySQL er kompatibel med Airflow version 1.10?