Fórum Insert/Delete em uma tabela e Insert/Delete em outra tabela detalhe #428225

07/11/2012

0

Bom dia, gostaria de tirar uma dúvida de como executar a seguinte operação no Firebird:
Tenho as seguintes tabelas:

Modulos
-------
CODMODULO
MODULO
DESCRICAO

USUARIOS
--------
CODUSUARIO
USUARIO
SENHA

UPERMISSAO
----------
CODUSUARIO
CODMODULO
PERMISSAO

Quando eu cadastro novo usuário, eu insiro uma lista de módulos a partir da tabela módulo que ele tem acesso usando um ClientDataSetField.
Pelo Delphi eu posso fazer as alterações para que quando um módulo for cadastrado/deletado, cada usuario tenha aquela permissão criada/deletada do seu registro detalhe da tabela UPERMISSAO

NOVO MODULO ->
PARA CADA USUARIO
-> NOVO REGISTRO UPERMISSAO CONTENDO NOVO MODULO

Gostaria de saber como proceder para permitir que essas alterações sejam executadas pelo Firebird, em vez do delphi.

Desde já

Obrigado pela atenção =)
Walter Desidera

Walter Desidera

Responder

Posts

07/11/2012

Deivison Melo

Não entendi, poderia detalhar um pouco melhor por favor!

Vc deseja automatizar as rotinas e deixar por conta do banco, é isso?

Se for isso, o ideal seria trabalhar com a utilização de triggers (gatilhos)
Responder

Gostei + 0

07/11/2012

Walter Desidera

Opa blz kra? Então, digamos que eu tinha 10 usuários cadastrados e eu cadastre/delete um módulo, eu preciso inserir/deletar 10 registro na tabela UPERMISSAO, um para cada usuario. No delphi eu carrego os usuários e faço um loop para inserir o novo módulo um por um na tabela UPERMISSAO, e para deletar eu faço uma query "Delete * from UPERMISSAO where CODMODULO = :CODMODULO' passando como parâmetro o código do módulo que eu estou apagando. Queria fazer essas alterações pelo firebird mesmo.

Responder

Gostei + 0

09/11/2012

Luiz Menin

Tu teria que fazer uma procedure e uma trigger.
Quando for feita alguma alteração na tabela, a trigger vai ser chamada.
Pesquise sobre como proceder.
Achei esse link, da para ter uma ideia do caminho a ser tomado: http://www.destructor.de/firebird/trigger.htm
Responder

Gostei + 0

18/11/2012

Walter Desidera

Eu encontrei a solução:

After Insert na tabela MODULOS
------------------------------

AS
declare variable codusr integer;
declare variable codper integer;
begin
for SELECT codusuario from usuario into codusr do
insert into upermissao values (:codusr,new.codmodulo,'S');
for SELECT codperfil from perfil into codper do
insert into iperfil values (:codper,new.codmodulo,'S');
end

Uso um for, inserindo uma nova permissão para cada usuário automáticamente com uma trigger.

Obrigado pelas respostas pessoal \o/
Responder

Gostei + 0

18/11/2012

Alisson Santos

Tópico está sendo encerrado, qualquer duvida nos informar.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar