Auto incremento no Delphi com MySQL
Novo por aqui, tenho a seguinte dúvida: como faço para gerar ID automático no Delphi? Uso o Banco MySQL. Atualmente já uso uma função para fazer isso, mas gostaria de saber como transferir essa responsabilidade para o Banco, embora eu deixa o campo ID como Auto incremento, se eu não passar o valor valor do ID através da função que eu chamo ele vai requerer que o campo campo id seja repassado também. Desde já agradeço.
Obs: já Coloquei a Propriedade Requerid do ID como Falso
Obs: já Coloquei a Propriedade Requerid do ID como Falso
Edivania
Curtidas 0
Melhor post
Luiz Santos
14/03/2017
Boa tarde Edivania.
Para criar uma tabela no MySQL que gere um campo id com auto incremento basta incluir o comando "auto_increment".
Supondo que seu campo já exista e já tenha valores nele use isso para iniciar de um valor específico.
Grande abraço
Para criar uma tabela no MySQL que gere um campo id com auto incremento basta incluir o comando "auto_increment".
CREATE TABLE XPTO ( ID INTEGER NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) );
Supondo que seu campo já exista e já tenha valores nele use isso para iniciar de um valor específico.
ALTER TABLE XPTO AUTO_INCREMENT=1001;
Grande abraço
GOSTEI 3
Mais Respostas
Raylan Zibel
13/03/2017
Qual componente, ou conjunto de componentes, está usando?
GOSTEI 0
Jones Granatyr
13/03/2017
Opa! Se você utilizar os componentes da paleta FireDAC não precisa configurar nada. É só definir o campo autoincremento no banco de dados e os próprios componentes farão o trabalho (use FDConnection e FDQuery)
GOSTEI 0
Marcus Soares
13/03/2017
Edivania,
O MySQL já faz o auto incremento sozinho.
Talvez a alteração necessária esteja no código da sua função. Por que é obrigatório informar o ID para criar um registro ?
O MySQL já faz o auto incremento sozinho.
Talvez a alteração necessária esteja no código da sua função. Por que é obrigatório informar o ID para criar um registro ?
GOSTEI 1
Edivania
13/03/2017
Obrigado pelas dicas, eu uso um trio de componentes, SetDataSet, DataSetProvider e ClientDataSet, consegui resolver o problema colocando a propriedade requerid do meu campo id como falso tanto, no clientdaset quanto no setdaset, o problema era que eu tinha colocado falso apenas no clientdaset. o resto já estava ok no banco, porém agora surgiu outro problema, e aproveitando a oportunidade por aqui, alguém poderia me informar como relacionar tabelas com chave primaria e estrangeira? Na Realidade já fiz essa relação no Banco mas o devo fazer no delphi?
GOSTEI 0
Luiz Santos
13/03/2017
Boa tarde Edvania.
Você só precisa tomar cuidado com a Integridade Referencial.
Por exemplo, antes de excluir um registro na tabela pai (a que cede a chave) verificar se a tabela filha (a que recebe a chave) possui algum registro vinculado.
O mesmo vale para o INSERT.
Espero ter ajudado.
Grande abraço
Você só precisa tomar cuidado com a Integridade Referencial.
Por exemplo, antes de excluir um registro na tabela pai (a que cede a chave) verificar se a tabela filha (a que recebe a chave) possui algum registro vinculado.
O mesmo vale para o INSERT.
Espero ter ajudado.
Grande abraço
GOSTEI 1
Edivania
13/03/2017
Obrigado pela dia dica
GOSTEI 0
Socrates Foschera
13/03/2017
ola tudo bem pessoal preciso de ajuda desenvolvi um programa de cadastro de cliente com ficha de seguimento para o cadastro do trator dai tudo bem porem quando salvo os dados o id do cadastro de trator fica negativo alguem pode me ajudar
GOSTEI 0
Edivania
13/03/2017
ola tudo bem pessoal preciso de ajuda desenvolvi um programa de cadastro de cliente com ficha de seguimento para o cadastro do trator dai tudo bem porem quando salvo os dados o id do cadastro de trator fica negativo alguem pode me ajudar
Como você está atribuindo o Id?
GOSTEI 0