sql >> Databasteknik >  >> RDS >> Mysql

MySQL automatisk inkrement på en icke-primär nyckel

Jag var tvungen att hantera ett liknande problem när jag beställde ett kategoriträd på ett onaturligt sätt. Om du infogar alla rader för ett id på en gång, kan du göra något så här för varje subId:

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

Om du behöver "lägga till" en rad till ett id kan du ställa in @seq med

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

Detta skulle naturligtvis kräva hantering av id av applikationen och inte mySQL.

Du kan göra samma sak som det sista kodblocket för att få nästa tillgängliga ID också.



  1. Hur man ändrar ett databasnamn i SQL Server med T-SQL

  2. PHP, ORM, MSSQL och Unicode, är det möjligt att få dessa att fungera tillsammans?

  3. Får du det senast infogade post-id:t för en databastabell i java?

  4. Ta reda på om en CHECK-begränsning är kolumnnivå eller tabellnivå i SQL Server (T-SQL-exempel)