Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   La funcion last_insert_id de my sql devuelve siempre cero (https://www.clubdelphi.com/foros/showthread.php?t=86580)

frandigo77 04-09-2014 17:04:47

La funcion last_insert_id de my sql devuelve siempre cero
 
Hola buenas...hago refernecia al foro por que tengo un problema al que no lo logro darle solucion. Estoy trabajando con Delphi y MySql y cuando realizo una inserción en la bd, intento recuperar el valoor del registro metido, ya sea desde la capa intermedia mediante un query o desde el mismo mysql y siempre me devueve el valor 0. El mismo entorno MySQL Worckbench tambien me devuelve 0, alguien puede ayudarme.

Gracias.

roman 04-09-2014 17:44:10

¿La tabla donde inserts el registro tiene un campo de tipo autoinc?

// Saludos

luisgutierrezb 04-09-2014 19:00:06

También hay que ver que la función last_insert_id() funciona por conexión, por lo que si otra conexión hace las inserciones y quieres ver en otra en cual va o cuantas lleva o cual fue la última, no se podrá...

frandigo77 05-09-2014 00:20:14

Si la clave primaria es AutoInc..la seect la ejcuto desde el mismo entorno de MySQL

Código SQL [-]
Insert into Tabla values(x,x,x);
select last_insert_id();


Esta misma operacion la realizo desde un TDataSetProvider en Delphi y tambien me devuelve el mismo resultado..0.

Código Delphi [-]
procedure TsvmRPK03.prqrPersonaAfterUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind);
begin
  inherited;
  if UpdateKind = ukInsert then
  begin
    //OJO Tanto para Maestro como para Detalle
    SourceDS.Tag:= Self.UltimaIdentidad; //REVISAR last_change_id
    DeltaDS.Fields[0].NewValue:= SourceDS.Tag;
  end;
end;

Código Delphi [-]
function TsvmRPK03.UltimaIdentidad: LongInt;
var
  V: Variant;
begin
  qrLastInSertId.Close;
  qrLastInsertId.Open;
  Result:= qrLastInsertIdId.Value;
end;

luisgutierrezb 24-09-2014 17:24:51

Pero si esta configurada tu conexión para ser persistente? porque si no es así, cada vez que cierras y abres un query se crea una conexión nueva, otra cosa, si no tienes el campo autoinc en un indice, también te regresara 0


La franja horaria es GMT +2. Ahora son las 08:10:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi