Fórum Dúvida #60828
29/08/2009
0
Olá do Pessoal sou novato no Fórum e em DB Firebird
estou tentando relacionar duas tabelas e não estou conseguindo...
O erro é esse:
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column PRODUTO.ESTOQUE cannot be repeated in UPDATE statement.
At line 21, column 1
--diz que a tabela não está referenciada, mas está
--eu não entendo ele afirmar que o campo estoque da tabela produto
não poder ser repetido no modo de Update..
Esse é o código de relacionamento:
CREATE OR ALTER trigger d_venda_au0 for d_venda
active after update position 0
AS
begin
if (new.cod_produto <> old.cod_produto) then
begin
update produto
set ESTOQUE = (ESTOQUE + old.qtde)
where CODIGO = old.cod_produto;
update produto
set ESTOQUE = (ESTOQUE - new.qtde)
where CODIGO = new.cod_produto;
end
else
if (new.qtde <> old.qtde) then
begin
update produto
set ESTOQUE = (ESTOQUE + old.qtde),
ESTOQUE = (ESTOQUE - new.qtde)
where CODIGO = old.cod_produto;
end
end
Pessoal? se puderem me ajudar, eu agradeço muito...
Um abraço...
Geule, Porto Seguro - Arraial d´Ajuda...
estou tentando relacionar duas tabelas e não estou conseguindo...
O erro é esse:
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column PRODUTO.ESTOQUE cannot be repeated in UPDATE statement.
At line 21, column 1
--diz que a tabela não está referenciada, mas está
--eu não entendo ele afirmar que o campo estoque da tabela produto
não poder ser repetido no modo de Update..
Esse é o código de relacionamento:
CREATE OR ALTER trigger d_venda_au0 for d_venda
active after update position 0
AS
begin
if (new.cod_produto <> old.cod_produto) then
begin
update produto
set ESTOQUE = (ESTOQUE + old.qtde)
where CODIGO = old.cod_produto;
update produto
set ESTOQUE = (ESTOQUE - new.qtde)
where CODIGO = new.cod_produto;
end
else
if (new.qtde <> old.qtde) then
begin
update produto
set ESTOQUE = (ESTOQUE + old.qtde),
ESTOQUE = (ESTOQUE - new.qtde)
where CODIGO = old.cod_produto;
end
end
Pessoal? se puderem me ajudar, eu agradeço muito...
Um abraço...
Geule, Porto Seguro - Arraial d´Ajuda...
Geule
Curtir tópico
+ 0
Responder
Posts
31/08/2009
Emerson Nascimento
o que está sendo dito é que você não pode repetir a coluna ESTOQUE num UPDATE.
na instrução acima você está fazendo UPDATE na coluna estoque DUAS VEZES. isso não é possível.
tente assim:
veja se assim funciona:
update produto set ESTOQUE = (ESTOQUE + old.qtde), ESTOQUE = (ESTOQUE - new.qtde) where CODIGO = old.cod_produto;
na instrução acima você está fazendo UPDATE na coluna estoque DUAS VEZES. isso não é possível.
tente assim:
CREATE OR ALTER trigger d_venda_au0 for d_venda active after update position 0 AS begin if (new.cod_produto <> old.cod_produto) then begin update produto set ESTOQUE = (ESTOQUE + old.qtde) where CODIGO = old.cod_produto; update produto set ESTOQUE = (ESTOQUE - new.qtde) where CODIGO = new.cod_produto; end else if (new.qtde <> old.qtde) then begin update produto set set ESTOQUE = (ESTOQUE + (old.qtde - new.qtde)) where CODIGO = old.cod_produto; end end
veja se assim funciona:
CREATE OR ALTER trigger d_venda_au0 for d_venda active after update position 0 AS begin update produto set ESTOQUE = (ESTOQUE + old.qtde) where CODIGO = old.cod_produto; update produto set ESTOQUE = (ESTOQUE - new.qtde) where CODIGO = new.cod_produto; end
Responder
Gostei + 0
01/09/2009
Geule
Olá, obrigado pelas respostas, me serviram muito...
mas o que eu não entendi, e que com o mesmo código tinha
funcionado em outro DB, mas usando a versão 2.0 do Firebird....
Mais uma vez obriago, qualquer dúvida postarei aqui.... Valeu
mas o que eu não entendi, e que com o mesmo código tinha
funcionado em outro DB, mas usando a versão 2.0 do Firebird....
Mais uma vez obriago, qualquer dúvida postarei aqui.... Valeu
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)