Date parsed: 09/10/2007 22:15:11
Date: Tue, 09 Oct 2007 22:15:11 GMT
Ok. The is that:
CREATE TRIGGER TR_TITC_DEL ON DBO.T400TITC
FOR DELETE
AS
DECLARE @SQ_DEL DECIMAL(10),
@CD_USU CHAR(10),
@CD_UND NUMERIC(3),
@CD_CLI NUMERIC(10),
@NR_OPE CHAR(20),
@DT_ENC DATETIME,
@DT_CAD DATETIME,
@ID_SOL CHAR(1),
@SQ_TIT INT,
@LI_RET INT
-- VERIFICA SE O REGISTRO JÃ EXISTE NA DELE, SE JÃ EXISTIR, NÃO FAZ NADA
-- HERE IS THE PROBLEM !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!
IF (SELECT count(*) FROM T400DELE, DELETED, T400CTAD WHERE SG_TAB = 'CT'
AND CH_TAB = CONVERT(CHAR(8) , DELETED.CD_CLI) + ';' + CONVERT(CHAR(4),
DELETED.CD_AG) + ';' + CONVERT(CHAR(5), DELETED.CD_CTA_COR) + ';' + CONVERT
(CHAR(1), T400CTAD.DV_CTA_COR)) = 0
-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
BEGIN
SELECT @SQ_DEL = ISNULL(MAX(SQ_DEL), 0) + 1 FROM T400DELE
INSERT INTO T400DELE
(SQ_DEL,
CH_TAB,
SG_TAB,
DH_ATU,
ID_SIC)
SELECT @SQ_DEL,
CONVERT(CHAR(8) , DELETED.CD_CLI) + ';' + CONVERT(CHAR(4), DELETED.CD_AG) +
';' + CONVERT(CHAR(5), DELETED.CD_CTA_COR) + ';' + CONVERT(CHAR(1), T400CTAD.
DV_CTA_COR) ,
'CT',
GETDATE(),
'S'
FROM DELETED,T400CTAD
WHERE DELETED.CD_AG = T400CTAD.CD_AG
AND DELETED.CD_CTA_COR = T400CTAD.CD_CTA_COR
END
-- VERIFICA SE O REGISTRO JÃ EXISTE NA CEXC, SE JÃ EXISTIR, NÃO FAZ NADA
IF (SELECT COUNT(*) FROM T400CEXC, DELETED
WHERE T400CEXC.CD_AG = DELETED.CD_AG AND T400CEXC.CD_CLI = DELETED.CD_CLI
AND T400CEXC.CD_CTA_COR = DELETED.CD_CTA_COR ) = 0
BEGIN
-- Insere na T400CEXC
INSERT INTO T400CEXC
(CD_AG,
CD_CLI,
CD_CTA_COR,
DV_CTA_COR,
CD_CLI_SCD,
DH_ATU)
select deleted.CD_AG,
deleted.CD_CLI,
deleted.CD_CTA_COR,
CONVERT(CHAR(1),T400CTAD.DV_CTA_COR),
T400PESS.CD_CLI_SCD,
GETDATE()
from deleted, t400ctad, t400pess
where (deleted.cd_ag = t400ctad.cd_ag) and
(deleted.cd_cta_cor = t400ctad.cd_cta_cor) and
(deleted.cd_cli = t400pess.cd_cli)
END
-- ATUALIZAÃÃO DA TABELA T400CNTA
-- IF @@ROWCOUNT > 0
-- BEGIN
SELECT @NR_OPE = SUBSTRING(REPLICATE('0', 10 - LEN(RTRIM(CONVERT(CHAR(5),
T400CTAD.CD_CTA_COR)) + RTRIM(CONVERT(CHAR(5), T400CTAD.DV_CTA_COR)))) +
RTRIM(CONVERT(CHAR(5), T400CTAD.CD_CTA_COR)) + RTRIM(CONVERT(CHAR(5),
T400CTAD.DV_CTA_COR)), 1, 10),
@CD_USU = DELETED.CD_USU_ATU,
@CD_CLI = DELETED.CD_CLI,
@ID_SOL = T400CTAD.CD_TP_CTA,
@CD_UND = DELETED.CD_AG,
@DT_ENC = GETDATE()
FROM DELETED,T400CTAD
WHERE DELETED.CD_AG = T400CTAD.CD_AG AND
DELETED.CD_CTA_COR = T400CTAD.CD_CTA_COR
IF @@ERROR <> 0
BEGIN
RAISERROR ('TR_TITC_DEL: ERRO NA ATUALIZAÃÃO DE EXCLUSÃO DA CONTA DO
CLIENTE (T400CNTA)- 1', 1, 2)
END
IF (@NR_OPE IS NOT NULL) AND (LEN(@NR_OPE) > 0)
BEGIN
EXEC PR_ATUALIZA_CNTA_V2 @CD_UND, @CD_CLI, 'CC', 'CC', 'C', @NR_OPE,
@ID_SOL, @DT_CAD, @DT_ENC, 'D', @CD_USU, @DT_ENC, @SQ_TIT, @LI_RET OUT
IF @LI_RET <> 0
BEGIN
RAISERROR ('TR_TITC_DEL: ERRO NA ATUALIZAÃÃO DE EXCLUSÃO DA CONTA DO
CLIENTE (T400CNTA)- 2', 1, 2)
END
END
-- END
Hugo Kornelis wrote:
>>After upgrade application database from sql2000 to sql2005, some triggers
>>stop response or break down.
>[quoted text clipped - 23 lines]
>>
>>--Exactly in "IF" statement, the code stop response.
>
>Hi Krisnamourt,
>
>Can you please post the full trigger code? It would also help to see the
>table structure (as CREATE TABLE statement, with all constraints,
>indexes, and properties included), plus some sample data (posted as
>INSERT statements) that we can use to reproduce the issue.
>
--
Message posted via
http://www.sqlmonster.com