sql >> Database >  >> RDS >> Mysql

MySQL automatisch verhogen op een niet-primaire sleutel

Ik had te maken met een soortgelijk probleem bij het op onnatuurlijke wijze bestellen van een categorieboom. Als u alle rijen voor één id tegelijk invoegt, kunt u voor elke sub-id zoiets als dit doen:

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

Als u een rij aan een id moet "toevoegen", kunt u @seq instellen met

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

Dit vereist natuurlijk beheer van de id door de applicatie en niet door mySQL.

Je zou hetzelfde kunnen doen als het laatste codeblok om ook de volgende beschikbare id te krijgen.



  1. node-mysql verbinding pooling

  2. Selecteer max(datum) werkt niet als de rijen verschillende waarden hebben, ik wil alleen de rij met de hoogste datum ophalen

  3. MySQL-syntaxis controleren of parameter null is

  4. Altijd een database nodig voor je app?