Criar Trigger para não deletar determinado registro
Boa noite pessoal !
Gostaria de criar uma trigger para não deletar do BD um determinado usuário, alguém já fez algo parecido ? Tentei criar como segue abaixo, mas não tive sucesso:
CREATE TRIGGER TRG_USUARIO_ADMIN FOR TBL_USUARIO
ACTIVE AFTER DELETE POSITION 0
AS
DECLARE VARIABLE ACHOU VARCHAR(10);
BEGIN
SELECT LOGIN
FROM TBL_USUARIO
WHERE LOGIN = ´X´ INTO ACHOU
IF (:ACHOU IS NOT NULL) THEN
EXCEPTION ACHOU;
END;
Obrigado.
Hilton
Gostaria de criar uma trigger para não deletar do BD um determinado usuário, alguém já fez algo parecido ? Tentei criar como segue abaixo, mas não tive sucesso:
CREATE TRIGGER TRG_USUARIO_ADMIN FOR TBL_USUARIO
ACTIVE AFTER DELETE POSITION 0
AS
DECLARE VARIABLE ACHOU VARCHAR(10);
BEGIN
SELECT LOGIN
FROM TBL_USUARIO
WHERE LOGIN = ´X´ INTO ACHOU
IF (:ACHOU IS NOT NULL) THEN
EXCEPTION ACHOU;
END;
Obrigado.
Hilton
Hilton
Curtidas 0
Respostas
Marco Salles
16/10/2007
e so uma opinião... Mas pq esta usando o AFTER... A primeira tentativa
deveria ser feito com o [b:30d6b16174]Before[/b:30d6b16174]
deveria ser feito com o [b:30d6b16174]Before[/b:30d6b16174]
CREATE TRIGGER TRG_USUARIO_ADMIN FOR TBL_USUARIO
ACTIVE [u:30d6b16174]AFTER[/u:30d6b16174] DELETE POSITION 0
AS
GOSTEI 0
Hilton
16/10/2007
Boa noite pessoal !
Agora deu certo, eu não tinha criado o exception.
CREATE EXCEPTION MENSAGEM_1 ´Esse usuário não pode ser removido.´;
CREATE TRIGGER TRG_USUARIO_ADMIN FOR TBL_USUARIO
ACTIVE BEFORE DELETE POSITION 0
AS
BEGIN
IF (OLD.GRUPO_USUARIO = 1 AND OLD.LOGIN = ´X´) THEN
BEGIN
EXCEPTION MENSAGEM_1;
END
END;
Obrigado.
Hilton
Agora deu certo, eu não tinha criado o exception.
CREATE EXCEPTION MENSAGEM_1 ´Esse usuário não pode ser removido.´;
CREATE TRIGGER TRG_USUARIO_ADMIN FOR TBL_USUARIO
ACTIVE BEFORE DELETE POSITION 0
AS
BEGIN
IF (OLD.GRUPO_USUARIO = 1 AND OLD.LOGIN = ´X´) THEN
BEGIN
EXCEPTION MENSAGEM_1;
END
END;
Obrigado.
Hilton
GOSTEI 0
Marco Salles
16/10/2007
´evento´ Before e consequentemente deve lançar a Exceção... sem problema... Mas engraçado , parece que voce estava usando uma exceção no primeiro post , tal como fora postado
so me parecia estar usando o [b:4de68d6580]After[/b:4de68d6580] , sendo que deveria usar o [b:4de68d6580]Before [/b:4de68d6580] , tal como fizera no segundo post...
CREATE TRIGGER TRG_USUARIO_ADMIN FOR TBL_USUARIO
ACTIVE AFTER DELETE POSITION 0
AS
DECLARE VARIABLE ACHOU VARCHAR(10);
BEGIN
SELECT LOGIN
FROM TBL_USUARIO
WHERE LOGIN = ´X´ INTO ACHOU
IF (:ACHOU IS NOT NULL) THEN
[u:4de68d6580][b:4de68d6580]EXCEPTION ACHOU; [/b:4de68d6580][/u:4de68d6580]
END;
so me parecia estar usando o [b:4de68d6580]After[/b:4de68d6580] , sendo que deveria usar o [b:4de68d6580]Before [/b:4de68d6580] , tal como fizera no segundo post...
GOSTEI 0