Trigger para evitar campos NULL en una tabla

Recién estoy incursionando al SQL Server y necesito crear un Trigger para evitar que dejen en blanco (NULL) 3 campos de 6 en una tabla y no me funciona:
CREATE TRIGGER trgpagocontarjeta
ON Payments
FOR INSERT
AS
--DECLARE @vPaymentMethodDesc varchar(20)
DECLARE @PaymentMethod_Id char(10)
DECLARE @CreditCardNo char(15)
DECLARE @CardHolderName varchar(15)
DECLARE @ExiryDate datetime
--SELECT @vPaymentMethodDesc = vPaymentMethodDesc FROM PaymentMethods JOIN INSERTED ON PaymentMethods.PaymentMethod_Id=INSERTED.PaymentMethod_Id
SELECT @PaymentMethod_Id = PaymentMethod_Id FROM INSERTED
--IF (@vPaymentMethodDesc = 'PM001')
IF (@PaymentMethod_Id = 'PM001')
-- PM001 es el ID del pago con Tarjeta de Crédito
BEGIN
SELECT @CreditCardNo=CreditCardNo FROM INSERTED
SELECT @CardHolderName=CardHolderName FROM INSERTED
SELECT @ExiryDate=ExiryDate FROM INSERTED
IF ((@CreditCardNo=NULL) OR (@CardHolderName=NULL) OR (@ExiryDate=NULL))
BEGIN
PRINT 'Necesitas llenar los campos de la tarjeta de credito'
ROLLBACK TRANSACTION
END
END

1 respuesta

Respuesta
1
Yo te recomiendo hacer las validaciones de lado del cliente para así evitar un viaje al servidor en vano, si esta es una página web puedes utilizar un control RequiredFieldValidator o si es una aplicación de escritorio con un simple if validando los textbox no estén vacíos.
Pero si es necesario hacerlo así.. así de rapido no veo ningún error en tu trigger solo trata esto:
cambia el "= NULL" por "IS NOT NULL"
IF ((@CreditCardNo IS NOT NULL) OR (@CardHolderName IS NOT NULL) OR (@ExiryDate IS NOT NULL))
Avisame si te funciono.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas