Fazer com que os campos de revisão de uma Evidência sejam inalteráveis depois de salvos no banco.
Sugestões
1) Triggers para Campos
Restringir especificamente os campos em que o revisor preencher.
CREATE OR REPLACE TRIGGER ${trigger-nome}
BEFORE UPDATE ON ${tabela}
FOR EACH ROW
BEGIN
IF (:OLD.${campo1} IS NOT NULL AND :NEW.${campo1} <> :OLD.${campo1}) OR
(:OLD.${campo2} IS NOT NULL AND :NEW.${campo2} <> :OLD.${campo2}) OR
(:OLD.${campo3} IS NOT NULL AND :NEW.${campo3} <> :OLD.${campo3}) THEN
RAISE_APPLICATION_ERROR(-20001, 'Imutabilidade violada. Um ou mais campos imutáveis estão sendo alterados.');
END IF;
END;
2) Triggers para a Tabela
Remover os campos do revisor da tabela de Evidências, movendo-os para uma nova Tabela (nova entidade no Java) e lá criar a restrição contra qualquer atualização.
Por conta disso, o mapeamento entre a nova tabela e Evidências deve ser unidirecional, e estar declarado somente na nova tabela.
CREATE OR REPLACE TRIGGER ${trigger-nome}
BEFORE UPDATE ON ${tabela}
BEGIN
RAISE_APPLICATION_ERROR(-20001, 'Imutabilidade violada. Atualizações nesta tabela são proibidas.');
END;
Descrição
Fazer com que os campos de revisão de uma Evidência sejam inalteráveis depois de salvos no banco.
Sugestões
1) Triggers para Campos
Restringir especificamente os campos em que o revisor preencher.
2) Triggers para a Tabela
Remover os campos do revisor da tabela de Evidências, movendo-os para uma nova Tabela (nova entidade no Java) e lá criar a restrição contra qualquer atualização. Por conta disso, o mapeamento entre a nova tabela e Evidências deve ser unidirecional, e estar declarado somente na nova tabela.