Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Ayuda con un trigger

Estas en el tema de Ayuda con un trigger en el foro de SQL Server en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/10/2010, 20:28
 
Fecha de Ingreso: octubre-2010
Mensajes: 2
Antigüedad: 13 años, 6 meses
Puntos: 0
Ayuda con un trigger

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
  #2 (permalink)  
Antiguo 09/10/2010, 10:35
 
Fecha de Ingreso: octubre-2010
Mensajes: 2
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Ayuda con un trigger

hola, bueno volvi a modificar mi trigger comprendi mas cosas, sin embargo sigue sin mandarme el mensaje de print


CREATE TRIGGER trgPaymentMethod3 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 NOT NULL OR @CC_Name IS NOT NULL OR @Check_Num IS NOT NULL)
BEGIN
PRINT 'YOU CAN´T SAVE INFORMATION IN CREDIT CARD AND CHECK'
ROLLBACK TRANSACTION
END
ELSE
BEGIN
PRINT 'SAVED DATA'
ROLLBACK TRANSACTION
END
END
ELSE

IF(@PaymentMethod='Credit_Card')
BEGIN
IF ( @CC_Name IS NULL OR @Check_Num IS NOT NULL)
BEGIN
PRINT 'TIENES QUE INGRESAR DATOS EN CC_NAME Y CHECK DEJARLO EN BLANCO'
ROLLBACK TRANSACTION
END
ELSE
BEGIN
PRINT 'SAVED DATA'
ROLLBACK TRANSACTION
END
END
ELSE
IF(@PaymentMethod='Check')
BEGIN
IF (@CC_Name IS NOT NULL OR @CC_Name IS NOT NULL)
BEGIN
PRINT 'YOU CAN´T SAVE DATA IN CREDIT CARD'
ROLLBACK TRANSACTION
END
ELSE
BEGIN
PRINT 'SAVED DATA'
ROLLBACK TRANSACTION
END
END
RETURN
GO
  #3 (permalink)  
Antiguo 11/10/2010, 12:49
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ayuda con un trigger

Oye compañero, el PRINT es un comando que se envia solo en usandolo en la parte de ANALIZADOR DE CONSULTAS, lee tu ayuda en linea...
__________________
MCTS Isaias Islas

Etiquetas: trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:32.