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

dni triggers

Estas en el tema de dni triggers en el foro de Mysql en Foros del Web. Buenas estaba haciendo un trigger para obligar que el campo de caracteres sea 9 pero me gustaría saber si hay alguna forma para obligar que ...
  #1 (permalink)  
Antiguo 04/01/2015, 10:18
 
Fecha de Ingreso: enero-2015
Mensajes: 3
Antigüedad: 9 años, 3 meses
Puntos: 0
dni triggers

Buenas estaba haciendo un trigger para obligar que el campo de caracteres sea 9 pero me gustaría saber si hay alguna forma para obligar que el ultimo carácter sea una letra, en java se hacerlo pero aquí no tengo ni idea :(


Código MySQL:
Ver original
  1. CREATE OR REPLACE TRIGGER dniEmpleado
  2. BEFORE INSERT OR UPDATE OF DNI ON EMPLEADOS
  3.   IF (LENGTH(:NEW.DNI) != 9)
  4.   THEN
  5.     raise_application_error(-20600,:NEW.DNI|| 'DNI no valido');

Última edición por gnzsoloyo; 04/01/2015 a las 10:54
  #2 (permalink)  
Antiguo 04/01/2015, 10:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: dni triggers

raise_application_error es de Oracle, no de MySQL.

El manejo de excepciones personalizadas en MySQL es distinto.
Ver manual de referencia: http://dev.mysql.com/doc/refman/5.5/en/signal.html

Por otro lado, si un valor X se ingresará por formulario, lo que corresponde es que lo valides en el formulario, no en la base de datos.
Mandar basura a confirar en la base es desperdiciar capacidades y consumir recursos de servicios inútilmente. No es programar de modo eficiente.

Cada cosa tiene su ambiente de mejor uso, y validar longitudes de textos es de JavaScript, no SQL...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, dni, update
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 16:08.