PostgreSQL - validacion por base de datos

 
Vista:
sin imagen de perfil

validacion por base de datos

Publicado por undertaker (13 intervenciones) el 02/12/2014 19:19:28
Hola muy buenas

Tengo una tabla que es bodega, tiene un ID,nombre y tipo(int)

Quiero saber si es posible validar que el tipo solo en los insert o update siempre sea solo 1 o 2

Nose si puede ser con funciones procedimientos trigger que no estoy muy familiarizado con eso...

mi pregunta es posible eso? y como?
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

validacion por base de datos

Publicado por martin (121 intervenciones) el 02/12/2014 23:26:09
Podes usar CHECK pero esto se hace en la declaración de la tabla con lo cual si queres hacer un cambio tenes que hacer un alter talbe etc, un ejemplo:

1
2
3
4
5
CREATE TABLE bodega (
    ID integer,
    nombre text,
    tipo INT CHECK (tipo IN(1,2) )
);

Pero mejor es usar una constraint de clave foranea, ya que en general estos valores se registran en una tabla secundaria, es decir tendrias que tener una tabla con esos valores, con lo cual el día de mañana quieras controlar que sean los valores 1,2 y 3,y con solo agregar el registro 3 en esa tabla ya se valida:

ejemplo:

1
2
3
4
5
6
7
CREATE TABLE bodega (
    ID integer,
    nombre text,
    tipo INT ,
   CONSTRAINT clave_forane_tipo FOREIGN KEY (tipo)
   REFERENCES tabla_con_codigos_tipo (id_codigo_entabla_foranea) MATCH FULL
);

Para mas referencias http://www.postgresql.org/docs/9.2/static/ddl-constraints.html.

SAludos.
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
sin imagen de perfil

validacion por base de datos

Publicado por undertaker (13 intervenciones) el 03/12/2014 01:31:17
Es mas recomendable un constraint que un check??
que es más seguro??
existe validacion por base de datos como una funcion??

me pongo en el lugar que cualkiera pueda entrar a la base de datos y modifique los tipos..que puedo hacer en ese caso?
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

validacion por base de datos

Publicado por martin (121 intervenciones) el 03/12/2014 01:42:03
por eso te conviene constraint x que cualquiera agrega un registro de tipo y listo,si no lo tenes que hacer con trigger y una funcion la cual tendrias que modificar cada vez que quieras validar un nuevo tipo.

SAludos.
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

validacion por base de datos

Publicado por Leopoldo Taylhardat (19 intervenciones) el 05/03/2015 16:35:21
Saludos...
un check especifica valores de una columna en la tabla...
el constraint es la interrelación entre las tablas por medio de la clave foránea...
si pones check a la columna y agregas un codigo tipo tres(3) en la tabla de tipos te dará error porque no es valido
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