Ir para conteúdo

POWERED BY:

Arquivado

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

jeffecardoso

Restringir Colunas

Recommended Posts

Bom dia,
Caros!

Estou com uma duvida e venho recorrer aos sábios.

Há possibilidade de restringir uma coluna para que apenas uma TRIGGER possa utilizar.

Ex. hipotético: Tenho uma tabela com 6 campos.

create table dummy (
id number, -- coluna 1
dia varchar2(10), -- coluna 2
dt_criacao date, --  coluna 3
id_usario number, -- coluna 4
dt_atualizacao date, -- coluna 5
id_usuario number); --coluna 6

O usuário só pode realizar operação nas colunas 1 e 2, nas colunas que vai da 3 a 6 deverá ser restrito apenas para operações de uma Trigger.

Obs.: Há operação não é por sessão, será algo permanente na tabela.

É possível? Se não qual alternativa poderia adotar?

Deste já agradeço a todos, caso alguém puder me explicar essa duvida e se possível um exemplo da implementação, ficarei extremamente grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta trigger seria uma operação da própria tabela ou de outra tabela.

 

Sendo na própria tabela algo assim

create or replace trigger ...

begin
   --rotina para obter vn_usuario

  :new.dt_atualizacao := sysdate;--cobrindo se algo foi informado
  :new.id_usuario := vn_usuario;
  ...
 end;

Pode gerar um erro também se algo for informado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E na própria tabela Motta, porém os campos onde a Trigger irá ocorrer, deve ser restrita apenas para utilização da Trigger ou seja o usuário não pode realizar insert ou update nesses campos , e nisso que estou com dificuldades.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simplesmente sobreponha os valores como mostrei.

create or replace TRIGGER TRG_TABELA
BEFORE INSERT or UPDATE ON tabela
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
BEGIN
  vn_usuario := ...;--funcao para obter o usuario
  :new.dt_atualizacao := sysdate;--cobrindo se algo foi informado
  :new.id_usuario := vn_usuario;
END;

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.