Em Rede sera que não da pau ?
Anderson Oliveira Furtilho
andersonfurtilho em gmail.com
Qui Nov 8 09:31:52 -03 2007
Olá amigo do news!!!
Imaginem a seguinte situação dentro de uma procedure
/* Gerar Entrada_Material */
INSERT INTO ENTRADA_MATERIAL
(SEQUENCIAL_CIDADES, DATA_ENTRADA,
SEQUENCIAL_FUNCIONARIOS, SEQUENCIAL_FORNECEDORES,
SEQUENCIAL_TRANSPORTADORAS, TIPO_ENTRADA)
VALUES
(:SEQUENCIAL_CIDADES_P, CURRENT_DATE,
:SEQUENCIAL_FUNCIONARIOS_P, :SEQUENCIAL_FORNECEDORES_P,
:SEQUENCIAL_TRANSPORTADORAS_P, 'A');
/* Gerar Entrada_Material_Detalhe */
INSERT INTO ENTRADA_MATERIAL_DETALHE
(SEQUENCIAL_PRODUTOS,QUANTIDADE,SEQUENCIAL_TIPO_UNIDADES,
VALOR_UNITARIO, VALOR_TOTAL, SEQUENCIAL_ENTRADA_MATERIAL,
DATA_ENTRADA) VALUES
(:SEQUENCIAL_PRODUTOS_V,
:QUANTIDADE_P, :SEQUENCIAL_TIPO_UNIDADES_V,
:VALOR_UNITARIO_V, (:QUANTIDADE_P * :VALOR_UNITARIO_V),
GEN_ID(GEN_ENTRADA_MATERIAL,0),
CURRENT_DATE);
Agora fica a duvida, o GEN_ID(GEN_ENTRADA_MATERIAL,0) pega o generator atual
da tabela master para inserir na detail.
E se eu tiver 10 computadores usando a mesma procedure e lançando coisas
diferentes, tudo ao mesmo tempo. Não corro o risco de gravar
na detail o valor da generator atual de outros computadores ?
No Postgresql sei que tenho que reservar uma seção assim toda vez que eu
pegar um GEN_ID(GEN_ENTRADA_MATERIAL,0) eu sei
que estou pegando do meu computador e não de outro computador que possa
estar lançando atualmente.
Desde já antecipo meus agradecimentos
Anderson
Mais detalhes sobre a lista de discussão lista