Ailsom F. Heringer (Osklen) escreveu:
Foxers,
How can I create a sqlserver trigger for update, to allow updates in
only one column of a table ?
Answering my own question:
ALTER TRIGGER UPD_PontosManuais ON PontosManuais FOR UPDATE NOT FOR
REPLICATION AS
-- Não permite a alteração de dados caso o lancamento já tenha sido
processado
-- Aílsom F. Heringer - 15 de setembro de 2006
BEGIN
DECLARE @mCd CHAR(6),
@mDELCd CHAR(6),
@mCodigoDoParceiro CHAR(11),
@mDELCodigoDoParceiro CHAR(11),
@mCodigoCliente VARCHAR(50),
@mDELCodigoCliente VARCHAR(50),
@mDataDoMovimento DATETIME,
@mDELDataDoMovimento DATETIME,
@mTipoDeMovimento CHAR(20),
@mDELTipoDeMovimento CHAR(20),
@mPontosEntrados CHAR(12),
@mDELPontosEntrados CHAR(12),
@mPontosSaidos CHAR(12),
@mDELPontosSaidos CHAR(12),
@mArq_Nome VARCHAR(50),
@mDELArq_Nome VARCHAR(50),
@mProcessado BIT,
@mErro INT,
@mErroMsg VARCHAR(255)
SELECT @mCd = A.Cd,
@mDELCd = D.Cd,
@mCodigoDoParceiro = A.CodigoDoParceiro,
@mDELCodigoDoParceiro = D.CodigoDoParceiro,
@mCodigoCliente = A.CodigoCliente,
@mDELCodigoCliente = D.CodigoCliente,
@mDataDoMovimento = A.DataDoMovimento,
@mDELDataDoMovimento = D.DataDoMovimento,
@mTipoDeMovimento = A.TipoDeMovimento,
@mDELTipoDeMovimento = D.TipoDeMovimento,
@mPontosEntrados = A.PontosEntrados,
@mDELPontosEntrados = D.PontosEntrados,
@mPontosSaidos = A.PontosSaidos,
@mDELPontosSaidos = D.PontosSaidos,
@mArq_Nome = A.Arq_Nome,
@mDELArq_Nome = D.Arq_Nome,
@mProcessado = A.Processado
FROM DELETED D
INNER JOIN INSERTED A ON D.Cd = A.Cd
IF (@mCd <> @mDelCd OR
@mCodigoDoParceiro <> @mDelCodigoDoParceiro OR
@mCodigoCliente <> @mCodigoCliente OR
@mDataDoMovimento <> @mDataDoMovimento OR
@mTipoDeMovimento <> @mDELTipoDeMovimento OR
@mPontosEntrados <> @mDELPontosEntrados OR
@mPontosSaidos <> @mDELPontosSaidos OR
@mArq_Nome <> @mDELArq_Nome)
AND @mProcessado = 1
BEGIN
SELECT @mErro = 3000002,
@mErroMsg = '#AFH# Esta Lançamento já foi processado,
e não poderá ser alterado.'
GOTO MostraErro
END
RETURN
MostraErro:
RAISERROR @mErro @mErroMsg
ROLLBACK TRANSACTION
END
--
Aílsom F. Heringer
[EMAIL PROTECTED]
Skype: ailsom.osklen
Analista de Sistemas
----------------------------------
Osklen
Departamento de Informática
Rio de Janeiro - RJ
BRASIL
http://www.osklen.com.br
55 21 22198971
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/profox
OT-free version of this list: http://leafe.com/mailman/listinfo/profoxtech
** All postings, unless explicitly stated otherwise, are the opinions of the
author, and do not constitute legal or medical advice. This statement is added
to the messages for those lawyers who are too stupid to see the obvious.