Inserted e Deleted
Caros colegas, estou migrando de Sql Server para Firebird, e numa trigger minha encontrei um
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
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
Curtidas 0
Respostas
Afarias
08/10/2003
não entendi a questão.
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+
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
Halexmaciel
08/10/2003
no Sql Server quando vc está inserindo, atualizando ou apagando um registro, se a tabela que está apagando possuir uma triggers, vc poderá verificar os dados da atual transação, como assim: Bem, vc tem no Sql Server duas Tabelas temporárias que não são visiveis para se trabalhar, as tabelas temporárias são: ´Inserted´ quando vc estiver alterando ou inserindo e ´Deleted´ quando vc estiver apagando registros de uma tabelas, essas duas tabelas são basicamente para pegar o estado do registro de uma determinada tabela: Como exemplo:
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
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
Afarias
08/10/2003
no Firebird não existe tais tabelas (inserted, etc...) -- mas vc pode checar qualquer tabela do banco dentro de uma trigger ou procedure.
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+
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
Oziasl
08/10/2003
A minha intenção é seguinte, com a instrução abaixo. Testar se o AUT.id_contrato é igual o ID da tabela contrato com as condições na ((c.status = ´L´) or (c.status = ´T´)) and c.data_atu ´5/1/2003´))) se for dispara um insert para gravar na tabela teste_delete_arq os registros ID referente a tabela atu_contrato do intervalo acima citado.
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
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
Afarias
08/10/2003
isto é uma trigger ou um procedimento?? poste o cabeçalho.
T+
T+
GOSTEI 0
Oziasl
08/10/2003
Recebi uma notição de mensagem no meio email, mas aconteçe que não fui em quem mandou a Mensagem referente ao tema. Ozias. Fuiiiiiiiiiiiiii :roll:
GOSTEI 0