Permissão em uma PROCEDURE

24/04/2013

1

Bom dia colegas!
Vou explicar minha situação.
Coloquei uma "Exception" em uma Trigger ( before update )no meu Banco de dados, esta:
IF (OLD.abaesconder = 'S')
 THEN
  Begin
   if (USER <> 'PISTA') 
    then
    new.abaesconder = 'N';
   else
   begin
    exception perfil_sem_permissao;
   End
END

Sempre que a minha antiga informação na coluna ABAESCONDER ( tabela A02AABA ) for igual a "S" e meu usuario não for "PISTA", a informação podera ser alterada para "N", se não for usuario "PISTA", a minha "Excepition" entra em "ação".
Meu problema vem agora pessoal. Tenho uma procedure que sempre que vou fechar o caixa, ela confere a Tabela A02AABA para verificar inconsistências, e acaba passando pelas triggers, quando vai passar pela minha trigger que postei logo acima, ela entra em ação a "exception", pois estou logado com o Usuario "PISTA" para fechar o caixa.
Alguém sabe de alguma coisa paliativa para esta situação? Pensei em algo na trigger tipo, "quando for a procedure X que estiver sendo ativada, desconsideraria a "Excepition"" algo bem a "grosso modo" mesmo ( to muito por fora deste tipo de comando se existe, tem como etc.. Galera! ) Sei la tipo assim:

IF (OLD.abaesconder = 'S')
 THEN
  Begin
   if (USER <> 'PISTA') or (PROCEDURE X ACTIVE)
    then
    new.abaesconder = 'N';
   else
   begin
    exception perfil_sem_permissao;
   End
END


Valeu Galera qualquer coisa estou aqui para melhores explicações. Um abraço!
Responder

Posts

24/04/2013

Matheus Rs

Bom dia colegas!
Vou explicar minha situação.
Coloquei uma "Exception" em uma Trigger ( before update )no meu Banco de dados, esta:
IF (OLD.abaesconder = 'S')
 THEN
  Begin
   if (USER <> 'PISTA') 
    then
    new.abaesconder = 'N';
   else
   begin
    exception perfil_sem_permissao;
   End
END

Sempre que a minha antiga informação na coluna ABAESCONDER ( tabela A02AABA ) for igual a "S" e meu usuario não for "PISTA", a informação podera ser alterada para "N", se for usuario "PISTA", a minha "Excepition" entra em "ação".
Meu problema vem agora pessoal. Tenho uma procedure que sempre que vou fechar o caixa, ela confere a Tabela A02AABA para verificar inconsistências, e acaba passando pelas triggers, quando vai passar pela minha trigger que postei logo acima, ela entra em ação a "exception", pois estou logado com o Usuario "PISTA" para fechar o caixa.
Alguém sabe de alguma coisa paliativa para esta situação? Pensei em algo na trigger tipo, "quando for a procedure X que estiver sendo ativada, desconsideraria a "Excepition"" algo bem a "grosso modo" mesmo ( to muito por fora deste tipo de comando se existe, tem como etc.. Galera! ) Sei la tipo assim:

IF (OLD.abaesconder = 'S')
 THEN
  Begin
   if (USER <> 'PISTA') or (PROCEDURE X ACTIVE)
    then
    new.abaesconder = 'N';
   else
   begin
    exception perfil_sem_permissao;
   End
END


Valeu Galera qualquer coisa estou aqui para melhores explicações. Um abraço!
Responder

25/04/2013

Matheus Rs

Bom dia colegas!
Vou explicar minha situação.
Coloquei uma "Exception" em uma Trigger ( before update )no meu Banco de dados, esta:
IF (OLD.abaesconder = 'S')
 THEN
  Begin
   if (USER <> 'PISTA') 
    then
    new.abaesconder = 'N';
   else
   begin
    exception perfil_sem_permissao;
   End
END

Sempre que a minha antiga informação na coluna ABAESCONDER ( tabela A02AABA ) for igual a "S" e meu usuario não for "PISTA", a informação podera ser alterada para "N", se for usuario "PISTA", a minha "Excepition" entra em "ação".
Meu problema vem agora pessoal. Tenho uma procedure que sempre que vou fechar o caixa, ela confere a Tabela A02AABA para verificar inconsistências, e acaba passando pelas triggers, quando vai passar pela minha trigger que postei logo acima, ela entra em ação a "exception", pois estou logado com o Usuario "PISTA" para fechar o caixa.
Alguém sabe de alguma coisa paliativa para esta situação? Pensei em algo na trigger tipo, "quando for a procedure X que estiver sendo ativada, desconsideraria a "Excepition"" algo bem a "grosso modo" mesmo ( to muito por fora deste tipo de comando se existe, tem como etc.. Galera! ) Sei la tipo assim:

IF (OLD.abaesconder = 'S')
 THEN
  Begin
   if (USER <> 'PISTA') or (PROCEDURE X ACTIVE)
    then
    new.abaesconder = 'N';
   else
   begin
    exception perfil_sem_permissao;
   End
END


Valeu Galera qualquer coisa estou aqui para melhores explicações. Um abraço!
Responder