Caroa. Tenho a seguinte situação, servidor SRV-APP03, banco de dados origem (MP-OFC), Tabela SB2010, e outro banco, sevidor SRV-HML, banco de dados destino (MP-IFC), tabela C_INVENTORY_QUANT_INT.
Fiz 3 trigger (insert, update e delete), que ao atualizar o estoque na tabela "SB2", replica a informação para a tabela "C_INVENTORY_QUANT_INT". Fiz os testes com utilizando o mesmo servidor, tudo ok, porem em servidores diferentes não consegui. alguém pode me ajudar: abaixo a trigger de update.
OBS: Aqui está usando o banco MP11-SUP que está no mesmo servidor do MP-IFS, quando eu copio essa trigger para o outro servidor "SRV-APP03", atualizando no servidor "SRV-HML", gera um erro, pois não encontra o servidor destino.
USE [MP11-SUP]
GO
/****** Object: Trigger [dbo].[trgAlteraEstoqueIFS] Script Date: 09/18/2014 11:10:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: João
-- Create date: 04/06/2014
-- Description: Altera um registro na tabela C_INVENTORY_QUANT_INT Banco MP-IFS quando um registro for
-- alterado na tabela SB2010
-- =============================================
ALTER TRIGGER [dbo].[trgAlteraEstoqueIFS]
ON [MP11-SUP].[dbo].[sB2010]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON
DECLARE
@RECNO INT
SELECT @RECNO = R_E_C_N_O_ FROM inserted
-- Verifica se o saldo em estoque para o Produto e Almoxarifado já existe na tabela do IFS
IF (SELECT COUNT(*)
FROM [sRV-HML].[MP-IFS].[dbo].[C_INVENTORY_QUANT_INT]
WHERE INT_RECNO = @RECNO) = 0
-- Se não existir, cria o registro na tabela C_INVENTORY_QUANT_INT
FROM dbo.SB2010
INNER JOIN dbo.SB1010 ON dbo.SB1010.B1_COD=dbo.SB2010.B2_COD
WHERE dbo.SB2010.D_E_L_E_T_ <> '*' AND dbo.SB1010.D_E_L_E_T_ <> '*'
AND dbo.SB2010.R_E_C_N_O_ = @RECNO
END
ELSE
-- Se exitir Efetua a atualização do Estoque e Custo médio no Item
BEGIN
UPDATE [sRV-HML].[MP-IFS].[dbo].[C_INVENTORY_QUANT_INT]
SET INT_QTD_ONHAND = B2_QATU,
INT_INVENTORY_VALUE = B2_CM1,
INT_TYPE = '2'
FROM [sRV-HML].[MP-IFS].[dbo].[C_INVENTORY_QUANT_INT]
INNER JOIN dbo.SB2010 ON dbo.SB2010.R_E_C_N_O_ = INT_RECNO
INNER JOIN dbo.SB1010 ON dbo.SB1010.B1_COD=dbo.SB2010.B2_COD
WHERE dbo.SB2010.D_E_L_E_T_ <> '*' AND dbo.SB1010.D_E_L_E_T_ <> '*'
AND dbo.SB2010.R_E_C_N_O_ = @RECNO
Pergunta
jleeestevam
Caroa. Tenho a seguinte situação, servidor SRV-APP03, banco de dados origem (MP-OFC), Tabela SB2010, e outro banco, sevidor SRV-HML, banco de dados destino (MP-IFC), tabela C_INVENTORY_QUANT_INT.
Fiz 3 trigger (insert, update e delete), que ao atualizar o estoque na tabela "SB2", replica a informação para a tabela "C_INVENTORY_QUANT_INT". Fiz os testes com utilizando o mesmo servidor, tudo ok, porem em servidores diferentes não consegui. alguém pode me ajudar: abaixo a trigger de update.
OBS: Aqui está usando o banco MP11-SUP que está no mesmo servidor do MP-IFS, quando eu copio essa trigger para o outro servidor "SRV-APP03", atualizando no servidor "SRV-HML", gera um erro, pois não encontra o servidor destino.
USE [MP11-SUP]
GO
/****** Object: Trigger [dbo].[trgAlteraEstoqueIFS] Script Date: 09/18/2014 11:10:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: João
-- Create date: 04/06/2014
-- Description: Altera um registro na tabela C_INVENTORY_QUANT_INT Banco MP-IFS quando um registro for
-- alterado na tabela SB2010
-- =============================================
ALTER TRIGGER [dbo].[trgAlteraEstoqueIFS]
ON [MP11-SUP].[dbo].[sB2010]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON
DECLARE
@RECNO INT
SELECT @RECNO = R_E_C_N_O_ FROM inserted
-- Verifica se o saldo em estoque para o Produto e Almoxarifado já existe na tabela do IFS
IF (SELECT COUNT(*)
FROM [sRV-HML].[MP-IFS].[dbo].[C_INVENTORY_QUANT_INT]
WHERE INT_RECNO = @RECNO) = 0
-- Se não existir, cria o registro na tabela C_INVENTORY_QUANT_INT
BEGIN
INSERT INTO [sRV-HML].[MP-IFS].[dbo].[C_INVENTORY_QUANT_INT]
([iNT_PART_NO]
,[iNT_DESCRIPTION]
,[iNT_QTD_ONHAND]
,[iNT_LOCAL_NO]
,[iNT_SERIAL_NO]
,[iNT_LOT_BATCH_NO]
,[iNT_INVENTORY_VALUE]
,[iNT_TYPE]
,[iNT_RECNO])
SELECT dbo.SB1010.B1_COD,
dbo.SB1010.B1_DESC,
dbo.SB2010.B2_QATU,
dbo.SB2010.B2_LOCAL,
'',
'',
dbo.SB2010.B2_CM1,
'1',
dbo.SB2010.R_E_C_N_O_
FROM dbo.SB2010
INNER JOIN dbo.SB1010 ON dbo.SB1010.B1_COD=dbo.SB2010.B2_COD
WHERE dbo.SB2010.D_E_L_E_T_ <> '*' AND dbo.SB1010.D_E_L_E_T_ <> '*'
AND dbo.SB2010.R_E_C_N_O_ = @RECNO
END
ELSE
-- Se exitir Efetua a atualização do Estoque e Custo médio no Item
BEGIN
UPDATE [sRV-HML].[MP-IFS].[dbo].[C_INVENTORY_QUANT_INT]
SET INT_QTD_ONHAND = B2_QATU,
INT_INVENTORY_VALUE = B2_CM1,
INT_TYPE = '2'
FROM [sRV-HML].[MP-IFS].[dbo].[C_INVENTORY_QUANT_INT]
INNER JOIN dbo.SB2010 ON dbo.SB2010.R_E_C_N_O_ = INT_RECNO
INNER JOIN dbo.SB1010 ON dbo.SB1010.B1_COD=dbo.SB2010.B2_COD
WHERE dbo.SB2010.D_E_L_E_T_ <> '*' AND dbo.SB1010.D_E_L_E_T_ <> '*'
AND dbo.SB2010.R_E_C_N_O_ = @RECNO
END
END
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.