Bases de Datos - validaciones con triggers

   
Vista:

validaciones con triggers

Publicado por alejandro (1 intervención) el 20/11/2007 19:56:08
Buenas trades.

El unico problema que existe es que necesito validar el numero de cararcteres de un campo en special, por ejemplo utilizando tipos de identificacion en donde el trigger valide, que para la cedula de ciudadania solo se acepten 10 carateres y parala cedula de extranjeria solamentre 6 y asi dependiendo del tipo de identificxacion de antemano gracias,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
información
Otras secciones de LWP con contenido de Bases de Datos
- Cursos de Bases de Datos
- Temas de Bases de Datos
información
Cursos y Temas de Bases de Datos
- Modelo de datos
- Instalación y Configuración de Bases de Datos
- APIs XML para Bases de Datos

Respuesta.

Publicado por Leopoldo Taylhardat (183 intervenciones) el 21/11/2007 21:06:30
Saludos desde Maracay, Venezuela...

Bueno, te explico...

Los triggers realmente no son para usarlos de validación aunque si pueden hacerlo...
No sé con cual BD trabajas, pero debes preguntar en el foro apropiado de la BD ya que el dialecto (lenguaje interno) de la BD es diferente para cada uno de los gestores...

En este ejemplo, el trigger haría que la validación en caso de error anule el valor que contiene la columna y no permitiría entonces que el gestor almacene la tupla si el dato es obligatorio...

Bueno el trigger se elabora de esta manera para que tengas una idea...
(en este caso antes de insertar...)

create trigger NOMBRE_TRIGGER before insert order # on TABLA
referencing new as nuevo for each row
begin
-- ACCION DE EJECUCION...--
end

la ACCION DE EJECUCION seria mas o menos así...dependiendo del dialecto SQL...
en este ejemplo la columna 'ciudadania' tiene valor 'C' para ciudadanos(nacionales) y cualquier otro valor para extranjeros...

create trigger NOMBRE_TRIGGER before insert order 1 on TABLA
referencing new as nuevo for each row
begin
-- ACCION DE EJECUCION...--
IF nuevo.ciudadania = 'C' THEN
IF LENGTH(NUEVO.CEDULA) <> 10 THEN
SET NUEVO.CEDULA = NULL;
END IF;
ELSEIF LENGTH(NUEVO.CEDULA) <> 6 THEN
SET NUEVO.CEDULA = NULL;
END IF;
end

Si el caso es que tu columna 'cedula' es obligatoria (mandatoria) en la bd, si hay error de longitud no guardaría el dato...
Pero creo que esa validación la deberías poner en la aplicación al cargar el dato.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar