Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

thiago_

Trigger chamando outra trigger

Recommended Posts

Pessoal bom dia,

estou mais uma vez aqui tentando resolver um problema que está acontencendo em uma aplicação de controle de cinemas.

 

O problema é o seguinte.

 

Tenho 2 tabelas: Produtoras, filmes. Uma produtora produz diversos filmes, um filme está ligado a uma produtora.

 

Produtora (cod_prod, nom_prod, tot_filmes)

Filme (cod_filme, tit_filme, ano_lanc, cod_prod)

 

Desejo criar uma regra em que na hora que o usuário inserir um filme (colocando o cod_prod) uma trigger é disparada atualizando automaticamente o campo tot_filmes da tabela Produtora. Até aí está tudo ok, mas preciso criar uma trigger que bloquei que o usuário atualize o campo tot_filmes, ou seja, vou ter um after row update bloqueando quando (old.tot_filmes <> new.tot_filmes).

 

Só que quando vou inserir um filme, a trigger do filme faz um Update Produtora.

 

Aí está o problema, alguém a disposição para me ajudar?

 

Muito obrigado a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal bom dia,

estou mais uma vez aqui tentando resolver um problema que está acontencendo em uma aplicação de controle de cinemas.

 

O problema é o seguinte.

 

Tenho 2 tabelas: Produtoras, filmes. Uma produtora produz diversos filmes, um filme está ligado a uma produtora.

 

Produtora (cod_prod, nom_prod, tot_filmes)

Filme (cod_filme, tit_filme, ano_lanc, cod_prod)

 

Desejo criar uma regra em que na hora que o usuário inserir um filme (colocando o cod_prod) uma trigger é disparada atualizando automaticamente o campo tot_filmes da tabela Produtora. Até aí está tudo ok, mas preciso criar uma trigger que bloquei que o usuário atualize o campo tot_filmes, ou seja, vou ter um after row update bloqueando quando (old.tot_filmes <> new.tot_filmes).

 

Só que quando vou inserir um filme, a trigger do filme faz um Update Produtora.

 

Aí está o problema, alguém a disposição para me ajudar?

 

Muito obrigado a todos

 

1) Crie uma tabela de controle

 

CREATE TABLE CONTROLE_ACESSO (

SESSAO NUMBER(12,0) NULL,

CONTROLE VARCHAR2(30) NULL

)

 

2) Na trigger que altera a coluna

se faz um insert nesta tabela

 

...

INSERT INTO CONTROLE_ACESSO

VALUES (USERENV('SESSIONID'),'produtora');

update produtora set qtd= ...;

...

 

3) na trigger que valida a alteração da tabela produtora faça

 

if :old.qtd ,. :new.qtd then

DELETE FROM CONTROLE_ACESSO

WHERE SESSAO = USERENV('SESSIONID') AND

CONTROLE = 'produtora';

IF SQL%NOTFOUND THEN

RAISE_APPLICATION_ERROR(-20001,'Erro ......');

END IF;

end if;

 

Qualquer alteração fora da trigger será inválida por não a tebala de controle.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.