Obter todos os IDs inseridos ao inserir várias linhas usando uma única consulta

Já examinei outras respostas e ainda sinto que minha pergunta é relevante e merece uma entrada separada.

Eu tenho uma tabela chamada configurações (que armazena as configurações do usuário) e eu tenho que inserir várias configurações para cada usuário. Inicialmente, eu havia executado uma instrução de inserção separada para cada configuração, mas tendo percebido que essa não era uma maneira particularmente boa de fazer isso, pensei em inserir várias linhas pela mesma instrução de inserção. Meu único problema é que eu quero os IDs auto_incrementados de cada uma das linhas recém-inseridas.

Eu li respostas que dizem que isso não é possível / escalável, etc, mas eu sinto que eu encontrei a solução. Eu quero feedback se o meu caminho está correto ou não e, portanto, esta questão.

O que eu fiz é simples. Depois de inserir as várias linhas, eu chamo last_insert_id () para obter o ID da primeira linha das linhas inseridas simultaneamente. Eu já tenho a contagem do número de linhas inseridas, então eu simplesmente criei uma nova matriz e a preenchi com IDs começando em last_insert_id () e terminando em last_insert_id () + n-1 (onde n é o número de linhas inseridas).

Eu sinto que isso vai funcionar por causa dos seguintes motivos:

1.) A documentação do MYSQL declara que last_insert_id () é dependente da conexão e se outro cliente / conexão inserir novos registros, isso não afetará o last_insert_id () do outro cliente.

2.) Eu sinto que como a inserção está sendo feita por uma única instrução SQL, toda a inserção deve ser tratada como uma única transação. Se isso for verdade, as regras ACID devem se aplicar e os valores auto_incrementados devem ser sequenciais. Eu não tenho certeza sobre isso.

Essas são as minhas razões pelas quais eu sinto que a lógica deve funcionar. Então, minha pergunta é: a lógica acima funcionará para TODAS as condições? Posso confiar nele para funcionar corretamente em todas as situações? Eu sei que está funcionando para mim atualmente.

questionAnswers(7)

yourAnswerToTheQuestion