thiago_ 0 Denunciar post Postado Outubro 3, 2008 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
Motta 645 Denunciar post Postado Outubro 3, 2008 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