Holaa tengo aki un problem ke no entiendo
estoy manejando una tabla que registra los siguientes datos:
CREATE TABLE Transactions.Revenue
(
iPaymentID INT IDENTITY(1,1) CONSTRAINT cpk_Revenue PRIMARY KEY NOT NULL,
iMemberID INT NOT NULL CONSTRAINT cfk_MemberDetails_Revenue FOREIGN KEY(iMemberID ) REFERENCES Members.MemberDetails(iMemberID ),
dPaymentDate DATETIME CONSTRAINT chk_date CHECK(dPaymentDate>GETDATE()),
vPaymentMethod VARCHAR(11) CONSTRAINT chk_PaymentMethod
CHECK(vPaymentMethod IN ('Cash','Check','Credit_Card')),
vCC_Num VARCHAR(16),--numero de tarjeta de credito
vCC_Name VARCHAR(35),--titular de la tarjeta de credito
vCheck_Num VARCHAR(5),--numero de cheque
vPaymentStatus VARCHAR(7) CONSTRAINT chk_PaySta CHECK(vPaymentStatus IN ('Paid','Pending'))
)
y quiero hace un trigger cuando seleccione el paymentmethod por ejemplo cash, lo que es cc_num, cc_name y check_num queden en null
y cuando seleccione cc_num no debo dejar cc_name en blanco y vcheck_num en null
y en viceversa cuando seleccione vchek deje en null cc_num y cc_name
estaba usando este trigger, me sale bien pero creo ke esta mal la logica,, y al momento de ingresar datos ps no me manda el mensaje de error.... aqui esta mi trigger
CREATE TRIGGER trgPaymentMethod ON Transactions.Revenue
FOR INSERT,UPDATE
AS
DECLARE @PaymentMethod VARCHAR
DECLARE @CC_Num VARCHAR
DECLARE @CC_Name VARCHAR
DECLARE @Check_Num VARCHAR
SELECT @PaymentMethod=vPaymentMethod, @CC_Num=vCC_Num, @CC_Name=vCC_Name, @Check_Num=vCheck_Num
FROM Inserted
IF(@PaymentMethod='Cash')
BEGIN
IF (@CC_Num IS NULL OR @CC_Name IS NULL OR @Check_Num IS NULL)
BEGIN
RAISERROR ('THE PAYMENT METHOD WAS CASH, YOU CAN´T ADD VALUES IN CREDIT CARD METHOD AND CHECK METHOD', 0, 1)
ROLLBACK TRANSACTION
END
ELSE
IF(
BEGIN
UPDATE Revenue
SET vCC_Num= NULL, vCC_Name=NULL, vCheck_Num= NULL
ROLLBACK
END
END
RETURN
GO