Pegar último ID de uma tabela no MySQL

06/03/2006

0

Estou com um enorme problema:

Preciso registrar venda e os produtos desta venda, relaciono tudo pelo ID da tabela venda.

So que preciso fazer isso tudo em 1 SQL, como faço para pegar o último ID da tabela de vendas?

abaixo estão as definições das tabelas para melhor ajudar o entendimento.

CREATE TABLE VENDAS (
  ID_VENDA DOUBLE NOT NULL AUTO_INCREMENT,
  MEDICOS_ID_MEDICO DOUBLE NULL,
  FUNCIONARIOS_ID_FUNCIONARIO DOUBLE NOT NULL,
  FORMASPAGTO_ID_FORMASPAGTO DOUBLE NOT NULL,
  CLIENTES_ID_CLIENTE DOUBLE NULL,
  VENDDTCADASTRO DATE NOT NULL,
  VENDHORACADASTRO TIME NOT NULL,
  VENDDTVENCIMENTO DATE NULL,
  VENDSUBTOTAL FLOAT(8,2) NOT NULL DEFAULT ´0´,
  VENDDESCONTO FLOAT(8,2) NOT NULL DEFAULT ´0´,
  VENDJURO FLOAT(8,2) NOT NULL DEFAULT ´0´,
  VENDTOTAL FLOAT(8,2) NOT NULL DEFAULT ´0´,
  VENDTOTALPAGO FLOAT(8,2) NOT NULL DEFAULT ´0´,
  VENDPAGO CHAR(4) NOT NULL DEFAULT ´NAO´,
  VENDDTPAGO DATE NULL,
  PRIMARY KEY(ID_VENDA),
  INDEX VENDAS_FKIndex1(CLIENTES_ID_CLIENTE),
  INDEX VENDAS_FKIndex2(FORMASPAGTO_ID_FORMASPAGTO),
  INDEX VENDAS_FKIndex3(FUNCIONARIOS_ID_FUNCIONARIO),
  INDEX VENDAS_FKIndex4(MEDICOS_ID_MEDICO)
);

CREATE TABLE VENDASxPRODUTOS (
  VENDAS_ID_VENDA DOUBLE NOT NULL,
  PRODUTOS_ID_PRODUTO DOUBLE NOT NULL,
  QTD INTEGER UNSIGNED NOT NULL DEFAULT ´0´,
  PRECO FLOAT(8,2) NOT NULL DEFAULT ´0´,
  DESCONTO FLOAT(8,2) NOT NULL DEFAULT ´0´,
  DESCONTO1 FLOAT(8,2) NOT NULL DEFAULT ´0´,
  JURO FLOAT(8,2) NOT NULL DEFAULT ´0´,
  JURO1 FLOAT(8,2) NOT NULL DEFAULT ´0´,
  TOTAL FLOAT(8,2) NOT NULL DEFAULT ´0´,
  PRIMARY KEY(VENDAS_ID_VENDA, PRODUTOS_ID_PRODUTO),
  INDEX VENDAS_has_PRODUTOS_FKIndex1(VENDAS_ID_VENDA),
  INDEX VENDAS_has_PRODUTOS_FKIndex2(PRODUTOS_ID_PRODUTO)
);


Tentei usar a função do MySQL
 LAST_INSERT_ID()
mas ela não funcionou perfeitamente.

Quando a tabela de vendas, esta vazia ou com registros essa função funciona, mas se eu inserir registros e depois limpar a tabela a função volta a contagem para 0 enquando deveria continuar do (último ID + 1)...

Como posso resolver esse problema? Gostaria de resolver isso sem fazer ´gambiarras´ no código...

Ps. espero ter explicado corretamente meu problema...


Henry Lima

Henry Lima

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar