Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

erison

postgre PDO->lastInsertId()

Recommended Posts

a função lastInsertId() so funciona para mysql?

pq eu fasso o insert normal mas ele não retorna id.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo:

 

...->lastInsertId("tabela_camposequencial_seq");

 

O tabela_camposequencial_seq é o objeto SEQUENCE no seu postgresql. Esta usando alguma outra estratégia para criar campos auto-incremental no seu sistema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo:

 

...->lastInsertId("tabela_camposequencial_seq");

 

O tabela_camposequencial_seq é o objeto SEQUENCE no seu postgresql. Esta usando alguma outra estratégia para criar campos auto-incremental no seu sistema?

não sei se fiz correto mas deu errado

 

lastInsertId('"TBchamado"_"IDchama"_seq');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse campo IDchama foi criado com o tipo Serial do Postgres?

Se sim, você deve ter um SEQUENCE de nome: TBchamado_IDchama_seq.

 

Para listar todas as SEQUENCEs do seu banco, utilize o seguinte comando:

SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';

 

Verifique se a SEQUENCE existe na lista.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$Qry -> execute();
return $PDO->lastInsertId('"TBchamado"_"IDchamado"_seq');

 

quero isso no pdo.

e não ta dando certo

 

e esse select que você falo

SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';

 

so trouxe todas as tabelas do meu banco

Compartilhar este post


Link para o post
Compartilhar em outros sites

so trouxe todas as tabelas do meu banco

 

Trouxe as tabelas?

Provavelmente suas SEQUENCEs estão com o mesmo nome das tabelas.

 

Tente assim:

return $PDO->lastInsertId('TBchamado');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Trouxe as tabelas?

Provavelmente suas SEQUENCEs estão com o mesmo nome das tabelas.

 

Tente assim:

return $PDO->lastInsertId('TBchamado');

 

deu certo não

tenho q colocar apenas o nome da tabela, ou o select tb?

 

coloquei so a tabela deu certo não.

return $PDO->lastInsertId('TBchamado');

Compartilhar este post


Link para o post
Compartilhar em outros sites

TBchamado eo nome da tabela.

e IDchama ea pk(serial)

Compartilhar este post


Link para o post
Compartilhar em outros sites

erison...

 

Criando esta tabela:

create table TBchamado (IDchama serial)

 

A seguinte SEQUENCE é gerada:

tbchamado_idchama_seq

 

Ao executar:

...->lastInsertId('tbchamado_idchama_seq');

 

Deveria retornar o lastId, como descrito na documentação:

http://php.net/manual/en/pdo.lastinsertid.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja o nome da sequence, no pgAdmin abra a sua data base

 

schemas/esquemas/public ai você vai ter um icone roxo/lilas ali estão suas sequences. o nome gerelamente é nome_da_tabela_nome_do_campo_seq

 

lembre q quando você usa letras maiusculoas ou acentos no postgres o nome da tabela/view DEVE ficar entre as aspas duplas.

 

tenta assim:

return $PDO->lastInsertId('"tbchamado_idchama_seq"');

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.