Ir para conteúdo

POWERED BY:

Arquivado

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

tldomingos

em TRIGGER do Oracle

Recommended Posts

Pessoal,É uma situação muito simples, porém to quebrando a cabeça, pois naum sei msm!Explicação:se uma variável tiver um valor 'x' então eu somente permitirei atualizar dois campos dessa msm tabela... como permitir um Update somente em alguns campos de uma tabela?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça uma trigger de before update

 

na lógica

 

begin
  if new.campox = 'X' then
	if ((:old.campo1 = :new.campo1) and
	   (:old.campo2 = :new.campo2)) then
	   null;
	else
	  // se entrou aqui e pq alterou algum campo diferente de campo1 ou campo2
	 raise_application_error(-20001,'alteração inválida');
	end if;
 end if;

 

outra solução seria testar campo a campo mas aí se um novo for criado a trg teria de ser alterada

 

begin
   if :old.campo3 <> :new.campo3 then
	  raise_application_error(-20001,'alteração inválida');
   end if;
end;

outra coisa a tomar cuidado e com campos que podem ser nulos

 

trata assim

 

if nvl(:old.campo1,-1/*valor absurdo pela lógica apenas para testar nulo*/ <> nvl(:new.campo1.-1) then ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Considerando que todas os triggers solicitados foram desenvolvidas corretamente, o procedimento ExcluiCancelados não produzirá o efeito desejado, pois não é permitido excluir qualquer atividade ou recurso de projetos cancelados, bem como o registro do próprio projeto. Sem excluirmos os triggers que implementam tais restrições (ou seja, sem utilizarmos DropTrigger), quais os comandos DDL deveremos executar para que o procedimento ExcluiCancelados possa ser executado corretamente? Apresente a resposta em um comentário anterior à declaração do procedimento ExcluiCancelados, como o seguinte: “ Para que a função ExcluiCancelados produza o efeito desejado é necessário que, antes de suaexecução, sejam executados os comandos: ... ”.Pessoal agora que a Trigger foi criada bacana e os outros procedimentos também foram, como posso resolver essa questão acima??

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.