Clipper On Line • Ver Tópico - Pegar o ID após INSERT - mysql_insert_id()
Mudar para estilo Clássico
Discussão sobre SQL
Postar uma resposta

Pegar o ID após INSERT - mysql_insert_id()

11 Set 2014 21:22

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?

Pegar o ID após INSERT - mysql_insert_id()

30 Set 2016 09:10

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

Código:
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.

Pegar o ID após INSERT - mysql_insert_id()

06 Out 2016 23:39

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

Código:
SELECT id FROM tabela ORDER BY id DESC LIMIT 1;
Postar uma resposta