sql >> Base de Datos >  >> RDS >> Mysql

Incremento automático de MySQL en una clave no principal

Tuve que lidiar con un problema similar al ordenar un árbol de categorías de forma poco natural. Si está insertando todas las filas para una identificación a la vez, podría hacer algo como esto para cada subId:

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

Si necesita "agregar" una fila a una identificación, puede configurar @seq con

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

Por supuesto, esto requeriría la gestión de la identificación por parte de la aplicación y no de mySQL.

Podría hacer lo mismo que el último bloque de código para obtener también la siguiente identificación disponible.