カテゴリツリーを不自然に並べ替える同様の問題に対処する必要がありました。一度に1つのIDのすべての行を挿入する場合は、subIdごとに次のようにすることができます。
SET @seq = 0;
INSERT INTO test
(id, subId, text) VALUES
(_id, @seq := @seq + 1, 'Some text')
;
IDに行を「追加」する必要がある場合は、@seqを
で設定できます。SELECT IFNULL(MAX(subId), 0) INTO @seq FROM test WHERE id = _id;
もちろん、これにはmySQLではなくアプリケーションによるidの管理が必要になります。
最後のコードブロックと同じように実行して、次に使用可能なIDを取得することもできます。