Fórum Last_Insert_Id() só retorna zero????? #31138
16/11/2007
0
// Insere na primeira tabela
sqlCondominos.SQL.clear;
sqlCondominos.SQL.add(´insert into PESSOA ´ +
´(PESSOA.NOME, PESSOA.ENDERECO, PESSOA.NUMERO, ´ +
´ PESSOA.CEP, PESSOA.RG, PESSOA.SEXO, ´ +
´ PESSOA.PROFISSAO, PESSOA.DATANASC, ´ +
´ PESSOA.DATACAD, PESSOA.DATAALT) ´ +
´values ´ +
´("´+ txtNome.Text + ´","´ + txtEndereco.Text + ´","´
+ txtNumero.Text + ´","´ + txtCep.Text + ´","´
+ txtRG.Text +´","´ + cbxSexo.Text + ´","´ + txtProfissao.Text + ´","´
+ FormatDateTime(´yyyyMMdd´,dtpDtNasc.Date) + ´","´
+ FormatDateTime(´yyyyMMdd´,Date) + ´","´
+ FormatDateTime(´yyyyMMdd´,Date) + ´")´);
sqlCondominos.ExecSql;
sqlTemp.SQL.Clear;
sqlTemp.SQL.Add(´Select Last_Insert_Id() as CODPES´);
sqlTemp.ExecSql;
idPessoa := sqlTemp.FieldByName(´CODPES´).AsInteger;
ShowMessage(´O id é: ´ + IntToStr(idPessoa));
Soueusei26
Curtir tópico
+ 0Posts
31/03/2008
Carlosphp
não sei como é no delphi, mas no o comando last_insert_id() tem que receber como parametro o link da conexão.
ex: $ultimo_id = last_insert_id($conexao);
Espero ter dado uma luz.
Abraços
Gostei + 0
05/04/2008
Mysys
Retornao´ultimovalorgeradoautomaticamentequetenhasidoinseridoemum
coluna AUTO_INCREMENT. Seeundefined [mysql_insert_id()],pageunde-
fined.
mysql>SELECTLAST_INSERT_ID();
->195
O ´ultimo ID que foi gerado e mantido no servidor em uma base por conex˜ao.
Elen˜aoser´aalteradoporoutrocliente.Elenemmesmoser´aatualizadosevocˆe
atuializaroutracoluna AUTO_INCREMENT comumvalorn˜ao-m´agico(Isto´e,um
valroquen˜aoseja NULL e nem 0).
Sevocˆeinserirmuitosregistrosaomesmotempocomumainstru¸c˜aoinsert,
LAST_INSERT_ID() retornaovalordaprimeiralinhainserida.Araz˜aopara
´
isto´etornarpossivelreproduzirfacilmenteamesmaintru¸c˜ao INSERT emalgum
outroservidor.
Se expr ´edadocomumargumentopara LAST_INSERT_ID(), ent˜ao o valor
doargumento´eretornadopelafun¸c˜aoe´econfiguradocomoopr´oximovalor
paraserretornadopela LAST_INSERT_ID(). Isto pode ser ´util para simular
sequˆencias:
Primeirocrieatabela:
mysql>CREATETABLEsequencia(idINTNOTNULL);
mysql>INSERTINTOsequenciaVALUES(0);
Ent˜aoatabelapodeserusadaparagerarsequˆenciaden´umeroscomoestes:
mysql>UPDATEsequenciaSETid=LAST_INSERT_ID(id+1);
Vocˆepodegerarsequˆenciassemchamar LAST_INSERT_ID(), mas a utilidade
deseusarafun¸c˜aodestemodo´equeovalorID´emantidonoservidorcomoo
´ultimovalorgeradoautomaticamente(seguroparamulti-usur´ario).Vocˆepode
recuperaranovaIDcomovocˆeleriaqualquervalor AUTO_INCREMENT normal
noMySQL.Porexemplo, LAST_INSERT_ID() (semumargmento)retornar´aa
novaID.Afun¸c˜ao mysql_insert_id() daAPICtamb´empodeserusadapara
obterovalor.
Notequecomomysql_insert_id()s´o´eatualizadodepoisdeinstru¸c˜oesINSERT
e UPDATE, vocˆe n˜ao pode utilizar a fun¸c˜ao da API C para recuperar o valor para
LAST_INSERT_ID(expr) depoisdeexecutaroutrainstru¸c˜aoSQLcomo SELECT
ou SET.
Gostei + 0
19/03/2009
Luiz @nton
Um Abraço
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)