Disparar uma trigger dentro de outra
24/11/2004
0
ola
Estou com um problema...
Tenho duas Trigger (before update ) e (after update) para atualização do menu de usuarios da minha tabela
porem quando executa um update nesta tabela ela me retorna o seguinte erro
Too many concurrent executions of the same request
( Muitas execuções simultâneas do mesmo pedido )
gostaria de saber se é possivel chamar uma trigger atravez da outra
o codigo da trigger esta logo abaixo
se alguem poder me ajudar ficarei muito grato
Estou verificanado se o que foi digitado na coluna ACESSO e = N se for
todas as outras tambem serão....
[color=blue:665043db2e]SET TERM ^;
CREATE OR ALTER TRIGGER ´TG_USUARIOS_MENU_ITENS_UP´ FOR ´USUARIOS_MENU_ITENS´
ACTIVE BEFORE UPDATE POSITION 5
AS BEGIN
IF (New.ACESSO = ´N´ ) THEN
UPDATE USUARIOS_MENU_ITENS
SET
INCLUIR = ´N´,
ALTERAR = ´N´,
EXCLUIR = ´N´,
SIGLA = New.ACESSO || New.INCLUIR || New.ALTERAR || New.EXCLUIR
WHERE COD_USUARIO = New.COD_USUARIO AND
COD_MENU = New.COD_MENU;
END
^
Aui eu verifico a atualizacao de cada coluna e monto a coluna sigla ....
CREATE OR ALTER TRIGGER ´TG_USUARIOS_MENU_ITENS_SIGLA_UP´ FOR ´USUARIOS_MENU_ITENS´
ACTIVE AFTER UPDATE POSITION 10
AS BEGIN
IF (Old.ACESSO <> New.ACESSO) THEN
UPDATE USUARIOS_MENU_ITENS
SET SIGLA = New.ACESSO || New.INCLUIR || New.ALTERAR || New.EXCLUIR
WHERE COD_USUARIO = New.COD_USUARIO AND
COD_MENU = New.COD_MENU;
IF (Old.INCLUIR <> New.INCLUIR) THEN
UPDATE USUARIOS_MENU_ITENS
SET SIGLA = New.ACESSO || New.INCLUIR || New.ALTERAR || New.EXCLUIR
WHERE COD_USUARIO = New.COD_USUARIO AND
COD_MENU = New.COD_MENU;
IF (Old.ALTERAR <> New.ALTERAR) THEN
UPDATE USUARIOS_MENU_ITENS
SET SIGLA = New.ACESSO || New.INCLUIR || New.ALTERAR || New.EXCLUIR
WHERE COD_USUARIO = New.COD_USUARIO AND
COD_MENU = New.COD_MENU;
IF (Old.EXCLUIR <> New.EXCLUIR) THEN
UPDATE USUARIOS_MENU_ITENS
SET SIGLA = New.ACESSO || New.INCLUIR || New.ALTERAR || New.EXCLUIR
WHERE COD_USUARIO = New.COD_USUARIO AND
COD_MENU = New.COD_MENU;
END
^
SET TERM ;^
COMMIT WORK[/color:665043db2e]
Estou com um problema...
Tenho duas Trigger (before update ) e (after update) para atualização do menu de usuarios da minha tabela
porem quando executa um update nesta tabela ela me retorna o seguinte erro
Too many concurrent executions of the same request
( Muitas execuções simultâneas do mesmo pedido )
gostaria de saber se é possivel chamar uma trigger atravez da outra
o codigo da trigger esta logo abaixo
se alguem poder me ajudar ficarei muito grato
Estou verificanado se o que foi digitado na coluna ACESSO e = N se for
todas as outras tambem serão....
[color=blue:665043db2e]SET TERM ^;
CREATE OR ALTER TRIGGER ´TG_USUARIOS_MENU_ITENS_UP´ FOR ´USUARIOS_MENU_ITENS´
ACTIVE BEFORE UPDATE POSITION 5
AS BEGIN
IF (New.ACESSO = ´N´ ) THEN
UPDATE USUARIOS_MENU_ITENS
SET
INCLUIR = ´N´,
ALTERAR = ´N´,
EXCLUIR = ´N´,
SIGLA = New.ACESSO || New.INCLUIR || New.ALTERAR || New.EXCLUIR
WHERE COD_USUARIO = New.COD_USUARIO AND
COD_MENU = New.COD_MENU;
END
^
Aui eu verifico a atualizacao de cada coluna e monto a coluna sigla ....
CREATE OR ALTER TRIGGER ´TG_USUARIOS_MENU_ITENS_SIGLA_UP´ FOR ´USUARIOS_MENU_ITENS´
ACTIVE AFTER UPDATE POSITION 10
AS BEGIN
IF (Old.ACESSO <> New.ACESSO) THEN
UPDATE USUARIOS_MENU_ITENS
SET SIGLA = New.ACESSO || New.INCLUIR || New.ALTERAR || New.EXCLUIR
WHERE COD_USUARIO = New.COD_USUARIO AND
COD_MENU = New.COD_MENU;
IF (Old.INCLUIR <> New.INCLUIR) THEN
UPDATE USUARIOS_MENU_ITENS
SET SIGLA = New.ACESSO || New.INCLUIR || New.ALTERAR || New.EXCLUIR
WHERE COD_USUARIO = New.COD_USUARIO AND
COD_MENU = New.COD_MENU;
IF (Old.ALTERAR <> New.ALTERAR) THEN
UPDATE USUARIOS_MENU_ITENS
SET SIGLA = New.ACESSO || New.INCLUIR || New.ALTERAR || New.EXCLUIR
WHERE COD_USUARIO = New.COD_USUARIO AND
COD_MENU = New.COD_MENU;
IF (Old.EXCLUIR <> New.EXCLUIR) THEN
UPDATE USUARIOS_MENU_ITENS
SET SIGLA = New.ACESSO || New.INCLUIR || New.ALTERAR || New.EXCLUIR
WHERE COD_USUARIO = New.COD_USUARIO AND
COD_MENU = New.COD_MENU;
END
^
SET TERM ;^
COMMIT WORK[/color:665043db2e]
Alexrol
Curtir tópico
+ 0
Responder
Posts
24/11/2004
Maicongabriel
:arrow: Triggers são ligadas a eventos, o que impede de uma trigger chamar outra! Porem, uma stored procedure você pode chamar!
Responder
24/11/2004
Alexrol
Obrigado maicongabriel....
Talvez eu me expressei mal quanto a logica Porem
Ja fiz uma procedure e o problema não e fazer trigger ou procedure e sim o erro que esta me retornando .Tanto com Triggers com Procedures este erro é o mesmo
Talvez eu me expressei mal quanto a logica Porem
Ja fiz uma procedure e o problema não e fazer trigger ou procedure e sim o erro que esta me retornando .Tanto com Triggers com Procedures este erro é o mesmo
Responder
Clique aqui para fazer login e interagir na Comunidade :)