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

É conceitualmente correto fazer um SELECT MAX(id) etc. para encontrar a última linha inserida?


Isso parece subjetivo, mas eu diria que não, não é conceitualmente certo, porque:
  • você deseja a linha inserida mais recentemente
  • mas sua consulta analisa o id máximo valor

Sim, existe alguma relação entre o id máximo e a inserção mais recente, mas considere o seguinte:
  • e se a linha inserida mais recentemente foi excluída?

Resposta no MySQL:você obtém resultados diferentes. Observe que nem precisa haver multithreading ou vários processos para que isso falhe. Isso porque são duas coisas diferentes (que, reconhecidamente, muitas vezes podem produzir os mesmos resultados).
select max(id) from <tablename>

vs
select last_insert_id()

(Adivinhe qual está certo.)

@Dems apontou que o OP é ambíguo. Vou esclarecer meu ponto principal:

Estamos falando de três informações diferentes:
  • máximo de id valor
  • id da linha inserida mais recentemente, específica para uma sessão
  • id da linha inserida mais recentemente na tabela (independentemente da sessão)

O perigoso é que, às vezes, consultar um dará a resposta certa para outro -- mas nem sempre .