sql >> Databáze >  >> RDS >> Mysql

Auto-inkrement MySQL na neprimárním klíči

Musel jsem se vypořádat s podobným problémem nepřirozeným řazením stromu kategorií. Pokud vkládáte všechny řádky pro jedno ID najednou, můžete pro každé podId udělat něco takového:

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

Pokud potřebujete "přidat" řádek k id, můžete nastavit @seq pomocí

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

To by samozřejmě vyžadovalo správu id aplikací a ne mySQL.

Můžete to udělat stejně jako poslední blok kódu, abyste získali další dostupné ID.



  1. Jak zkontrolovat, zda uživatel již existuje v MySQL s PHP

  2. Nelze nainstalovat pg gem na Mountain Lion

  3. C# Jak analyzovat řetězec data v libovolném zadaném formátu data Oracle?

  4. MySQL:Může uložená procedura vyvolat Java program?