Triggers - receber o valor do campo da tabela
15/07/2005
0
Boa tarde pessoal ,
Estou com o seguinte problema:
Construir uma trigger para que assim que for inserido um valor na tabela PCARGO alguns campos seta tabela fossem tratados e inseridos em outra tabela (R800IMP), até ai tudo bem o meu problema é, quando a trigger faz o insert na R800IMP ela não está levando o valor que eu acabei de inserir ou seja os valores que foram inserido na R800IMP são aleatorios e não os que acabei de inserir.
Segue abaixo o código da Trigger, se alguem puder me ajudar agradecerei...
Create TRIGGER ´SKOL´.´TG_INSERIR_CARIns´ ON ´Skol´.´rm´.´PCARGO ´
FOR INSERT
AS
DECLARE
@xCONDLOT INT,
@xCONTLIN INT,
@xCONINT VARCHAR(250),
@xCODCOLIGADA smallint,
@xNOME varchar(40),
@xCODIGO varchar(16),
@xDATA varchar(8)
BEGIN
SELECT @xCONDLOT=MAX(CodLot) FROM R800ILT
SET @xCONDLOT=@xCONDLOT+1
SET @xDATA=DAY(getdate())
SET @xDATA=@xDATA+CAST(MONTH(getdate()) AS VARCHAR)
SET @xDATA=@xDATA+CAST(YEAR(getdate()) AS VARCHAR)
SELECT @xNOME = NOME FROM PCARGO ****aqui a variavel recebe o valor que acabei de inserir na tabela PCARGO****8*
SELECT @xCODIGO = CODIGO FROM PCARGO ****aqui a variavel recebe o valor que acabei de inserir na tabela PCARGO****8*
SET @xCONTLIN=1
WHILE @xCONTLIN <= 4
BEGIN
IF @xCONTLIN=1
SET @xCONINT=´[R024CAR] ´
IF @xCONTLIN=2
SET @xCONINT=´ID_R024CAR=&ESTCAR=1 &CODCAR=´+CAST(@xCODIGO AS VARCHAR)
IF @xCONTLIN=3
SET @xCONINT=´TITCAR=´+CAST(@xNOME AS VARCHAR)
IF @xCONTLIN=4
SET @xCONINT=´TITRED=´+CAST(@xNOME AS VARCHAR)
Insert Into R800IMP(CodLot,NumLin,ConInt)Values(@xCONDLOT,@xCONTLIN,@xCONINT)
select @xCONTLIN=@xCONTLIN+1
end
END
Estou com o seguinte problema:
Construir uma trigger para que assim que for inserido um valor na tabela PCARGO alguns campos seta tabela fossem tratados e inseridos em outra tabela (R800IMP), até ai tudo bem o meu problema é, quando a trigger faz o insert na R800IMP ela não está levando o valor que eu acabei de inserir ou seja os valores que foram inserido na R800IMP são aleatorios e não os que acabei de inserir.
Segue abaixo o código da Trigger, se alguem puder me ajudar agradecerei...
Create TRIGGER ´SKOL´.´TG_INSERIR_CARIns´ ON ´Skol´.´rm´.´PCARGO ´
FOR INSERT
AS
DECLARE
@xCONDLOT INT,
@xCONTLIN INT,
@xCONINT VARCHAR(250),
@xCODCOLIGADA smallint,
@xNOME varchar(40),
@xCODIGO varchar(16),
@xDATA varchar(8)
BEGIN
SELECT @xCONDLOT=MAX(CodLot) FROM R800ILT
SET @xCONDLOT=@xCONDLOT+1
SET @xDATA=DAY(getdate())
SET @xDATA=@xDATA+CAST(MONTH(getdate()) AS VARCHAR)
SET @xDATA=@xDATA+CAST(YEAR(getdate()) AS VARCHAR)
SELECT @xNOME = NOME FROM PCARGO ****aqui a variavel recebe o valor que acabei de inserir na tabela PCARGO****8*
SELECT @xCODIGO = CODIGO FROM PCARGO ****aqui a variavel recebe o valor que acabei de inserir na tabela PCARGO****8*
SET @xCONTLIN=1
WHILE @xCONTLIN <= 4
BEGIN
IF @xCONTLIN=1
SET @xCONINT=´[R024CAR] ´
IF @xCONTLIN=2
SET @xCONINT=´ID_R024CAR=&ESTCAR=1 &CODCAR=´+CAST(@xCODIGO AS VARCHAR)
IF @xCONTLIN=3
SET @xCONINT=´TITCAR=´+CAST(@xNOME AS VARCHAR)
IF @xCONTLIN=4
SET @xCONINT=´TITRED=´+CAST(@xNOME AS VARCHAR)
Insert Into R800IMP(CodLot,NumLin,ConInt)Values(@xCONDLOT,@xCONTLIN,@xCONINT)
select @xCONTLIN=@xCONTLIN+1
end
END
Wfmzip
Curtir tópico
+ 0
Responder
Posts
23/07/2005
Marcus.magalhaes
Boa tarde.
Se vc quer capturar os valores q acabou de inserir, durante a execução de triggers, são criadas tabelas temporária chamadas [b:6078a2f393]inserted[/b:6078a2f393] e [b:6078a2f393]deleted[/b:6078a2f393], sendo assim vc pode fazer um select na tabela inserted e capturar os valores q foram inseridos.
Ex.:
[color=blue:6078a2f393]
Select @var_nome = NOME
From inserted
[/color:6078a2f393]
PS.: as tabelas [b:6078a2f393]inserted[/b:6078a2f393] e [b:6078a2f393]deleted[/b:6078a2f393] tem a mesma estrutura da tabela que está sofrendo a inserção/deleção ou update.
Espero ter ajudado.
Att,
Se vc quer capturar os valores q acabou de inserir, durante a execução de triggers, são criadas tabelas temporária chamadas [b:6078a2f393]inserted[/b:6078a2f393] e [b:6078a2f393]deleted[/b:6078a2f393], sendo assim vc pode fazer um select na tabela inserted e capturar os valores q foram inseridos.
Ex.:
[color=blue:6078a2f393]
Select @var_nome = NOME
From inserted
[/color:6078a2f393]
PS.: as tabelas [b:6078a2f393]inserted[/b:6078a2f393] e [b:6078a2f393]deleted[/b:6078a2f393] tem a mesma estrutura da tabela que está sofrendo a inserção/deleção ou update.
Espero ter ajudado.
Att,
Responder
Clique aqui para fazer login e interagir na Comunidade :)