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

| |||
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 ![]() |
| ||||
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.
__________________ Friedrich Nietzsche |
| |||
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 |
| ||||
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 |
| ||||
Re: Ayuda con trigger No puedes ![]() 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
__________________ Friedrich Nietzsche |