MySQL DBX como criar autoincremento

Delphi

02/06/2004

Olá pessoal, estou iniciando em MySQL com DBX,
em minha tabela no MySQL, defini um campo [b:19badecbd5]ID[/b:19badecbd5]
inteiro auto_increment que é a chave primaria
mas não sei como fazer com que a numeração seja
gerada automaticamente com o DBX.

O que eu preciso fazer pra isso acontecer ??
T+


Eniorm

Eniorm

Curtidas 0

Respostas

Eniorm

Eniorm

02/06/2004

(sobe)


GOSTEI 0
Eniorm

Eniorm

02/06/2004

[quote:e7a6168d4f=´Enio Marconcini´](sobe)[/quote:e7a6168d4f]


GOSTEI 0
Alex Maia

Alex Maia

02/06/2004

Se vc optar por não usar campos do tipo auto-incremento, podes usar a função abaixo declarando SqlExpr na clausula USES da unit :


// Função para autoincremento de tabelas
Function TF_Principal.Incrementa(Nome_Tabela : String; Chave_Primaria : String):Integer;
var Qry : TSQLQuery;
begin
Qry := TSQLQuery.Create(nil);
try
Qry.SQLConnection := SQLConnection1;
Qry.SQL.Text := ´SELECT MAX(´+Chave_Primaria+´) FROM ´+ Nome_Tabela;
Qry.Open;
if Qry.Fields[0].IsNull then
Incrementa := 1
else
Incrementa := Qry.Fields[0].AsInteger + 1 ;
finally
FreeAndNil(Qry);
end;
end;


GOSTEI 0
Eniorm

Eniorm

02/06/2004

[quote:510e46d133=´Alex Maia´]Se vc optar por não usar campos do tipo auto-incremento, podes usar a função abaixo declarando SqlExpr na clausula USES da unit(...)[/quote:510e46d133]

É uma boa alternativa, mas acho que desta forma eu
estaria correndo o risco de dois clientes, por acaso,
buscar o mesmo número e na hora de gravar, dar pau????

O auto_inc, que pertence ao banco, evitaria isso sem
maiores problemas, mas a sua ajuda vem a calhar.
T+


GOSTEI 0
Alex Maia

Alex Maia

02/06/2004

Contorno este problema realizando uma consulta antes da gravação para verificar se o número da chave que recebi já existe. Se existir busco receber um novo valor para a chave e gravo.


GOSTEI 0
POSTAR