Registro em Duplicidade...

Delphi

16/10/2006

[b:fd5ec8b6e5]1 - [/b:fd5ec8b6e5]pessoal tenho uma tabela no meu banco chamada [b:fd5ec8b6e5]Respostas[/b:fd5ec8b6e5] onde armazeno todas as respostas de uma determinada questao.
[b:fd5ec8b6e5]
[b]2-[/b:fd5ec8b6e5] tenho uma procedure q verifica se o registro existe...se o registro n existe ela cria se n existe ela incrementa um contador...por segurança ainda criei uma triguer no Before Insert que verifica se o registro existe ou n...caso exista gera uma excecão

[b:fd5ec8b6e5]3-[/b:fd5ec8b6e5] pois bem meu problema eh q minha procedure e minha triguer n estao fazendo oq realmente era p fazer...(verificar se o registro existe ou n). Estou tendo problemas jah q o banco esta deixando gravar os registros ignorando a triguer.
[b:fd5ec8b6e5]
p.s:[/b:fd5ec8b6e5] tenho de 30 a 50 alunos respondendo a avaliação a mesmo tempo..será isso? como posso resolver??? segue abaixo minha triguer e proceure..valewsss


[b:fd5ec8b6e5]++++++++++++++++++++++++++++++++++++++++++++++
PROCEDURE
++++++++++++++++++++++++++++++++++++++++++++++[/b:fd5ec8b6e5]
CREATE PROCEDURE SP_GRAVARESP (
VIDPERGUNTA_AVALIACAO INTEGER,
VIDTURMA_SERIE INTEGER,
VIDITEM INTEGER)
AS
DECLARE VARIABLE VCONT INTEGER;
BEGIN

[i:fd5ec8b6e5] [b:fd5ec8b6e5] -- select p verificar se esse registro existe....casoi n exista (CONT = 0) --da um Insert...caso contrario Incrementa o Contador (VCONT)
[/b:fd5ec8b6e5][/i:fd5ec8b6e5]
SELECT COUNT(RESPOSTAS.CONT)
FROM RESPOSTAS
WHERE RESPOSTAS.IDPERGUNTA_AVALIACAO =:VIDPERGUNTA_AVALIACAO
AND RESPOSTAS.IDTURMA_SERIE =:VIDTURMA_SERIE
AND RESPOSTAS.IDITEM =:VIDITEM
INTO :VCONT;

IF ((:VCONT = 0 ) OR (:VCONT IS NULL)) THEN

BEGIN
INSERT INTO RESPOSTAS
(CONT, IDITEM, IDPERGUNTA_AVALIACAO, IDRESPOSTA, IDTURMA_SERIE)
VALUES
(1, :VIDITEM, :VIDPERGUNTA_AVALIACAO, GEN_ID(GEN_RESPOSTAS_ID,1), :VIDTURMA_SERIE);
END
ELSE
BEGIN
UPDATE RESPOSTAS
SET
CONT = :VCONT +1
WHERE RESPOSTAS.IDPERGUNTA_AVALIACAO =:VIDPERGUNTA_AVALIACAO
AND RESPOSTAS.IDTURMA_SERIE =:VIDTURMA_SERIE
AND RESPOSTAS.IDITEM =:VIDITEM;

END

END

[b:fd5ec8b6e5]+++++++++++++++++++++++++++++++++++++++++++++++
[b]TRIGUER[/b:fd5ec8b6e5]
+++++++++++++++++++++++++++++++++++++++++++++++[/b]
CREATE TRIGGER RESPOSTAS_BI FOR RESPOSTAS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN

[i:fd5ec8b6e5][b:fd5ec8b6e5]--Caso o Registro jah exista gera uma Exceção [/b:fd5ec8b6e5] [/i:fd5ec8b6e5]

IF (EXISTS(SELECT RESPOSTAS.IDRESPOSTA,
AVALIACOES.IDAVALIACAO
FROM RESPOSTAS

INNER JOIN PERGUNTAS_AVALIACAO on (RESPOSTAS.IDPERGUNTA_AVALIACAO = PERGUNTAS_AVALIACAO.IDPERGUNTA_AVALIACAO)
INNER JOIN AVALIACOES ON (PERGUNTAS_AVALIACAO.IDAVALIACAO = AVALIACOES.IDAVALIACAO)

WHERE RESPOSTAS.IDPERGUNTA_AVALIACAO = NEW.IDPERGUNTA_AVALIACAO
AND RESPOSTAS.IDTURMA_SERIE = NEW.IDTURMA_SERIE
AND RESPOSTAS.IDITEM = NEW.IDITEM)) THEN

EXCEPTION EXCEPTION_ERRO ´Erro ao Gravar Respostas da Avaliação´;


END



desde jah....obrigado a todos qie colaboirarao e aos que leram tb!!! valews espero resolver mais uma com a ajuda de vc´s[i:fd5ec8b6e5][/i:fd5ec8b6e5]


Hviana

Hviana

Curtidas 0
POSTAR