Pegar o ID após INSERT - mysql_insert_id()

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Pegar o ID após INSERT - mysql_insert_id()

Mensagem por NiltonGM »

Amigos,

Após um comando INSERT com o campo ID autoincremento, em PHP tempos a função mysql_insert_id() que usada imediatamente após o INSERT traz o ID que foi gerado pelo BD naquela conexão, em Harbour não temos essa função na HBMYSQL, pelo menos não com esse nome. Como poderemos saber qual o ID o autoincremento do BD gerou?
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Pegar o ID após INSERT - mysql_insert_id()

Mensagem por NiltonGM »

Esqueci de postar a solução que consegui na epoca! Para ficar registrado, fiz a seguinte função:

Código: Selecionar todos

Function GetNextInsert_id(cTabela)
         Local nNextId := 0
         Local oQuery, oRow
         Local sql := "SELECT next_insert_id('" + HMG_LOWER(cTabela) + "') as next_id;"

         oQuery := ExecutaQuery(sql)

         if ExecutouQuery(@oQuery,sql)
            if !oQuery:NetErr()

               if ( oQuery:LastRec() > 0 )
                  oRow    := oQuery:GetRow(1)
                  nNextId := oRow:FieldGet('next_id')
               end
            end
         end

Return (nNextId)
Dessa forma consigo o id antes de inserir e o uso no INSERT, assim sei qual foi o id usado para controlar as demais inserções nas tabelas filhas.
Nilton Medeiros
nilton@sistrom.com.br
wmanesco
Usuário Nível 3
Usuário Nível 3
Mensagens: 116
Registrado em: 09 Set 2016 13:18
Localização: ITAJAI - SC

Pegar o ID após INSERT - mysql_insert_id()

Mensagem por wmanesco »

Apenas para deixar registrado, outra forma que sempre funcionou comigo:

Código: Selecionar todos

SELECT id FROM tabela ORDER BY id DESC LIMIT 1;
William Manesco
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
Responder