[firebase-br] Controle de ID sem generator
HPensador
hpensador em gmail.com
Qui Out 30 15:22:23 -03 2008
Boa tarde Colegas!
Na thread do TClientDataSet + Generator respondi que não utilizava
generator mais sim um método próprio que gerava a nova chave para mim. O
colega Sandro levantou a questão de como eu estava fazendo o controle de
insersões simultâneas. Eu não faço nenhum tratamento e para minha sorte
até o presente momento não tive nenhum problema. Vou colocar abaixo o
código do método (procedure) e a idéia por trás da mesma e caso algum
colega tenha alguma idéia/sugestão de melhoria para o mesmo, manda aí..
Tenho uma tabela (Controle_ID) com a seguinte estrutura:
Controle_ID (
Tabela varchar(30),
id_atual integer
)
e a seguinte SP
CREATE PROCEDURE NOVO_CODIGO (
tabela varchar(30))
returns (
proximo_codigo integer)
as
declare variable codigo_atual integer;
begin
--Recupera o valor atual do código
select id_atual from controle_id c
where (c.tabela = :tabela)
into :codigo_atual;
--Verifica se o valor do código é nulo
if (:codigo_atual is null) then
begin
proximo_codigo = 1;
insert into controle_id (tabela, id_atual)
values (:tabela, :proximo_codigo);
end
else
begin
proximo_codigo = codigo_atual + 1;
update controle_id set id_atual = :proximo_codigo
where (tabela = :tabela);
end
suspend;
end
Mais detalhes sobre a lista de discussão lista