Ajuda co nm Trigger
Gostaria de fazer uma trigger , que quando a tabela DISCRICAO , for gravada bo Banco de dados , o Valor do Saldo de um produto em outra Tabela < PRODUTO > Seje atualizado
To fazendo assim no IBEXPERT , mas confesso que sou fraquinho para isto
Ta tudo errado , pois como eu disse antes sou fraquinho para isto... :cry:
Assim ao Gravar Produto = 1 Qutantidade = 5 , automaticamente no D a se a baixa no estoque da Tabela PRODUTOS...
Muito obrigado
To fazendo assim no IBEXPERT , mas confesso que sou fraquinho para isto
CREATE TRIGGER DESCRICAO_AI0 FOR DESCRICAO ACTIVE AFTER INSERT POSITION 0 AS begin update produto set Produto.saldo=Produto.saldo - :qtdevenda; where Produto.cod_produto= :icodProduto; /* Trigger text */ end
Ta tudo errado , pois como eu disse antes sou fraquinho para isto... :cry:
A Tabela produto tem os Campos:
Cod_Produto
Saldo
A Tabela DESCRICAO tem os campos:
Cod_Produto
Quantidade
Assim ao Gravar Produto = 1 Qutantidade = 5 , automaticamente no D a se a baixa no estoque da Tabela PRODUTOS...
Muito obrigado
Marco Salles
Curtidas 0
Respostas
Marco Salles
23/03/2006
moloe mole mole
Não sei se a tecnica esta errada , mas fiz e assim e funfa
Não sei se a tecnica esta errada , mas fiz e assim e funfa
CREATE TRIGGER DESCRICAO_AI0 FOR DESCRICAO ACTIVE AFTER INSERT POSITION 0 AS begin update produto set PRODUTO.saldo= PRODUTO.saldo - DESCRICAO.quantidade where PRODUTO.cod_produto=DESCRICAO.cod_produto; /* Trigger text */ end
GOSTEI 0
Sremulador
23/03/2006
Assim Tb
CREATE TRIGGER DESCRICAO_AI0 FOR DESCRICAO
ACTIVE AFTER INSERT POSITION 0
AS
begin
update produto set
saldo=saldo - new.quantidade
where
cod_produto=new.cod_produto;
end
CREATE TRIGGER DESCRICAO_AI0 FOR DESCRICAO
ACTIVE AFTER INSERT POSITION 0
AS
begin
update produto set
saldo=saldo - new.quantidade
where
cod_produto=new.cod_produto;
end
GOSTEI 0
Marco Salles
23/03/2006
Assim Tb
CREATE TRIGGER DESCRICAO_AI0 FOR DESCRICAO
ACTIVE AFTER INSERT POSITION 0
AS
begin
update produto set
saldo=saldo - new.quantidade
where
cod_produto=new.cod_produto;
end
[b:58b79d558f]mas quem é este new.quantidade ??? com o banco ira reconhecer este valor ????[/b:58b79d558f]
Este saldo que voce esta se referindo é o saldo do campo da tabela Produto ???
Não precisa colocar Produto.Saldo nas istruçoes ???
É com se fosse o With do delphi :::
GOSTEI 0
Edilcimar
23/03/2006
o new em sgdb é o novo registro do campo em questão
GOSTEI 0
Martins
23/03/2006
[quote:b79db9db38=´Marco Salles´]
[b:b79db9db38]mas quem é este new.quantidade ??? com o banco ira reconhecer este valor ????[/b:b79db9db38]
Este saldo que voce esta se referindo é o saldo do campo da tabela Produto ???
Não precisa colocar Produto.Saldo nas istruçoes ???
É com se fosse o With do delphi :::[/quote:b79db9db38]
[b:b79db9db38]Marco[/b:b79db9db38], tanto a palavra [b:b79db9db38]New[/b:b79db9db38] quanto [b:b79db9db38]Old[/b:b79db9db38] são variáveis.
[b:b79db9db38]Leia os trechos:[/b:b79db9db38]
Boa sorte e manda ver na SQL.
Assim Tb
CREATE TRIGGER DESCRICAO_AI0 FOR DESCRICAO
ACTIVE AFTER INSERT POSITION 0
AS
begin
update produto set
saldo=saldo - new.quantidade
where
cod_produto=new.cod_produto;
end
[b:b79db9db38]mas quem é este new.quantidade ??? com o banco ira reconhecer este valor ????[/b:b79db9db38]
Este saldo que voce esta se referindo é o saldo do campo da tabela Produto ???
Não precisa colocar Produto.Saldo nas istruçoes ???
É com se fosse o With do delphi :::[/quote:b79db9db38]
[b:b79db9db38]Marco[/b:b79db9db38], tanto a palavra [b:b79db9db38]New[/b:b79db9db38] quanto [b:b79db9db38]Old[/b:b79db9db38] são variáveis.
[b:b79db9db38]Leia os trechos:[/b:b79db9db38]
Cria uma Trigger “Gatilho” para a tabela especificada. Trigger é um gatilho disparado após alguma ação ocorrida na tabela, isto é, podem existir Trigger de Insert, Update e Delete. As Trigger pode ser definidas como “Before-Antes” e “After-Depois”. Também pode ser definido um número onde indica qual a seqüência de tirareis a ser seguida. A Trigger só é disparada pela ação na tabela, não podendo ser disparada pela aplicação. Dentro da Trigger há duas formas de se referenciar as colunas das tabelas :
[color=green:b79db9db38][b:b79db9db38]OLD[/b:b79db9db38][/color:b79db9db38].Coluna e [color=green:b79db9db38][b:b79db9db38]NEW[/b:b79db9db38][/color:b79db9db38].Coluna. Onde [b:b79db9db38]OLD[/b:b79db9db38]. referencia o valor anterior da coluna e [b:b79db9db38]NEW[/b:b79db9db38]. referencia o novo valor da coluna.
CREATE TRIGGER SAVE_SALARY_CHANGE FOR EMPLOYEE ACTIVE AFTER UPDATE POSITION 0 AS BEGIN IF (old.salary <> new.salary) THEN INSERT INTO salary_history (emp_no, change_date, updater_id, old_salary, percent_change) VALUES ( old.emp_no, ´NOW´, user, old.salary, (new.salary - old.salary) * 100 / old.salary); END
No exemplo de trigger acima você pode ver nomes de campos precedidos das palavras “OLD” e “NEW”. No corpo de uma trigger o Firebird deixa disponíveis tanto o valor antigo como o novo valor de qualquer coluna, por exemplo old.salary e new.salary. Usando os valores OLD e NEW você pode facilmente criar registros de histórico, calcular o percentualde alteração de um valor numérico, encontrar em outras tabelas registros que combinem com o valor antigo ou novo de um campo ou fazer qualquer outra coisa que você precise fazer.
Boa sorte e manda ver na SQL.
GOSTEI 0