Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > SQL Server

Respuesta
 
Herramientas Desplegado
Antiguo 18-dic-2006, 15:43   #1 (permalink)
hunabku está en el buen camino
 
Fecha de Ingreso: diciembre-2003
Mensajes: 466
Ayuda con trigger

SAludos tengo una pregunta no se como hacer ya sea un procedmiento o un trigger, digamos tengo una tabla con id,fecha,tipodecambio

debe haber solo un tipo de cambio por dia, como puedo hacer para que cuando alguien quiera hacer un insert o update me aparesca solo una leyenda que ya existe un tipo de cambio de ese dia y que no se puede agregar o modificar
hunabku está desconectado   Responder Citando
Antiguo 18-dic-2006, 21:26   #2 (permalink)
Gabo77 sólo puede mejorar
 
Avatar de Gabo77
 
Fecha de Ingreso: noviembre-2006
Mensajes: 351
Re: Ayuda con trigger

IF EXISTS(SELECT 1 FROM TABLA WHERE TIPODECAMBIO = @TIPODECAMBIO AND DAY(FECHA) = DAY(GETDATE()) AND MONTH(FECHA) = MONTH(GETDATE()) AND YEAR(FECHA) = YEAR(GETDATE())) BEGIN
/*RETORNAR CON ERROR PARA DESPLEGAR EL MSG*/
END
ELSE BEGIN
/*GRABAR*/
END

Saludos!
Gabo77 está desconectado   Responder Citando
Antiguo 19-dic-2006, 09:46   #3 (permalink)
hunabku está en el buen camino
 
Fecha de Ingreso: diciembre-2003
Mensajes: 466
Re: Ayuda con trigger

gracias por responder pero me envia un error
hunabku está desconectado   Responder Citando
Antiguo 19-dic-2006, 20:33   #4 (permalink)
Moderador
Mithrandir llegará a ser famoso muy prontoMithrandir llegará a ser famoso muy pronto
 
Avatar de Mithrandir
 
Fecha de Ingreso: abril-2003
Mensajes: 12.108
Re: Ayuda con trigger

Lo más sencillo sería crear un índice UNIQUE sobre el campo de fecha. Esto permitirá una única fecha dentro de tu tabla.

En sistemás más completos seguramente tienes la llave del código de moneda (para manejar varias monedas), y la respuesta es la misma, basta expandir el índice para que sea IdMoneda+Fecha

PD. Que por lo que cuentas eso debería ser tu llave primaria y no simplemente un índice UNIQUE.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
Mithrandir está desconectado   Responder Citando
Antiguo 19-dic-2006, 22:35   #5 (permalink)
hunabku está en el buen camino
 
Fecha de Ingreso: diciembre-2003
Mensajes: 466
Re: Ayuda con trigger

Creo que es mas facil crear un trigger para evitar la insercion de de un nuevo registro si ya exixte la fecha, pero no se como hacer lo alguien me podria indicar que valores tomar o darme la idea se los agradeecria mucho
hunabku está desconectado   Responder Citando
Antiguo 22-dic-2006, 08:31   #6 (permalink)
Gabo77 sólo puede mejorar
 
Avatar de Gabo77
 
Fecha de Ingreso: noviembre-2006
Mensajes: 351
Re: Ayuda con trigger

nop, es mas fácil que hagas las cosas como se debe, a la larga lo agradeceras....

Mithrandir:
lo de crear la el indice con la fecha estaría bueno, pero como hacer para que te considere por día? no por segundos?
es decir, si haces que la fecha sea parte de tu llave te va a permitir dos registros del mismo tipo de moneda para el mismo día, solo que con hh:mm:ss diferentes, ó me equivoco? nunca he hecho una fecha como llave

hakunamatata:
lo de la solucion que te puse dices que te dio error, por que no lo pones para saber que pasa

Saludos
Gabo77 está desconectado   Responder Citando
Antiguo 22-dic-2006, 11:51   #7 (permalink)
Moderador
Mithrandir llegará a ser famoso muy prontoMithrandir llegará a ser famoso muy pronto
 
Avatar de Mithrandir
 
Fecha de Ingreso: abril-2003
Mensajes: 12.108
Re: Ayuda con trigger

No puedes Tienes que insertar solamente aaaa-mm-dd omitiendo la hora para que funcione como debe. SQL Server no tiene tipos de datos para solo fechas (que como los extraño).

Lo que hago para asegurarlo (cuando no me puedo fiar del método de ingreso) es usar un trigger INSTEAD OF para asegurar que omito la parte de la fecha. Aunque en este caso es precisamente la creación del trigger lo que queremos evitar.

...Se me ocurre crear un CONSTRAINT dentro del campo para validar que solo haya horas 00:00 y así eliminas el trigger, aunque cuando la regla falle te ocasionará un ROLLBACK en lugar de hacerlo transparente para el usuario.


Hunabuku,
No, no es más fácil un trigger. Un indice lo hace todo automáticamente, aunque Gabo acaba de postear la limitación de hacerlo por índice. Pero si lo prefieres necesitas algo como esto:

CREATE TRIGGER TRi_mitrigger ON tabla
FOR INSERT
AS

IF (SELECT Count(*) FROM tabla GROUP BY fecha) > 1
ROLLBACK TRANSACTION

Esto porque los nuevos registros ya los ves dentro de la tabla cuando corres el trigger, ni siquiera necesitas lidiar con la tabla Inserted
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
Mithrandir está desconectado   Responder Citando
Antiguo 22-dic-2006, 12:34   #8 (permalink)
hunabku está en el buen camino
 
Fecha de Ingreso: diciembre-2003
Mensajes: 466
Re: Ayuda con trigger

Gracias lo voy a probar
hunabku está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 15:38.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93