Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Incremento automático do MySQL em uma chave não primária


Eu tive que lidar com um problema semelhante ao ordenar uma árvore de categorias de forma não natural. Se você estiver inserindo todas as linhas para um id de uma só vez, poderá fazer algo assim para cada subId:
SET @seq = 0;
INSERT INTO test
  (id,  subId,            text) VALUES
  (_id, @seq := @seq + 1, 'Some text')
;

Se você precisar "adicionar" uma linha a um id, poderá definir @seq com
SELECT IFNULL(MAX(subId), 0) INTO @seq FROM test WHERE id = _id;

Obviamente, isso exigiria o gerenciamento de id pelo aplicativo e não pelo mySQL.

Você pode fazer o mesmo que o último bloco de código para obter o próximo id disponível também.