Fórum Inserted e Deleted #39273
08/10/2003
0
Select * From Inserted
Where Not CodEmpr is null and
Not NrDocMovEstq is null
No firebird existe alguma tabela parecida tanto para INSERTED e DELETED ? Qual é esta tabela, ou comando?
OBrigado
Halexmaciel
Curtir tópico
+ 0Posts
08/10/2003
Afarias
bom, só aproveitando... se está migrando para Interbase (ou Firebird) -- acho q seria um bom começo se vc desse uma lida nos manuais (ou parte deles) para conhecer a ferramenta q vai trabalhar.
Vc q veio do SQL Server verá q o IB é em parte bem menor (menos funções, etc) e muitas vezes diferente do SQL Server de forma q vc deverá conhecê-lo bem para poder ir na boa...
T+
Gostei + 0
08/10/2003
Halexmaciel
Eu tenho a tabela ´CLIENTE´ e dentro dessa tabela eu tenho uma trigger ´T_VerificaCliente´, esse trigger e resposável para verificar se existe já o cliente com o mesmo C.N.P.J., se existir ele envia uma mensagem, exemplo
Select * From Inserted Where CNPJ is Null
Já no Firebird eu não sei como funciona. Vcs podem me dizer como o Firebird trabalha com essas situações?
Obrigado
Gostei + 0
08/10/2003
Afarias
dentro de uma trigger, vc pode checar os valored do campo sendo atualizado (inserido, modificado ou excluido) usando o NEW ou OLD, por exemplo::
create trigger tr_verifica_cpf for clientes before insert as
begin
if (exists(select 1 from clientes where cpf = NEW.cpf)) then
exception cpf_duplicado;
end^
o uso do NEW (NEW.cpf) indica q estou pegando o valor inserido no registro q disparou a trigger.
outro exemplo -- tenho uma tabela de produtos q quando alterado o preco, guardo a atualizacao do preco em uma tabela de histórico de preços::
create trigger tr_atualiza_preco for produtos after update as
begin
if (new.preco <> old.preco) then
insert into historico_precos (cod_produto, data, preco)
values (new.codigo, current_date, new.preco);
end^
note q uso::
if (new.preco <> old.preco) then
para identificar se houve atualização no campo preco.
blz?!
T+
Gostei + 0
26/03/2004
Oziasl
Tabela teste_delete_arq possui CodTeste (Autoincremento) e CodAtu_contrato)
iF (Exists(select count(*) from atu_contrato AUT
where AUT.id_contrato in (select id from contratos c
where ((c.status = ´L´) or (c.status = ´T´)) and c.data_atu ´5/1/2003´)))) then
insert into teste_delete_arq (codatu_contrato) values (aut.id)
Se não fui legível por favor, tentarei explicar de outra forma. Obirago. Ozias
Gostei + 0
26/03/2004
Afarias
T+
Gostei + 0
26/03/2004
Oziasl
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)