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

Condicionar campo en oracle

Estas en el tema de Condicionar campo en oracle en el foro de Oracle en Foros del Web. Hola que tal. Tengo una tabla en oracle. Con distintos campos, la mayoria con tipo de dato varchar2(1), deseo que en dichos campos solo se ...
  #1 (permalink)  
Antiguo 22/07/2009, 14:21
 
Fecha de Ingreso: mayo-2008
Mensajes: 51
Antigüedad: 13 años, 1 mes
Puntos: 2
Condicionar campo en oracle

Hola que tal.

Tengo una tabla en oracle. Con distintos campos, la mayoria con tipo de dato varchar2(1), deseo que en dichos campos solo se pueda insertar o escribir la letra "f" o "c", o nulos ninguna otra cosa solo eso

les agradesco su ayuda
  #2 (permalink)  
Antiguo 31/07/2009, 09:49
 
Fecha de Ingreso: julio-2009
Mensajes: 52
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Condicionar campo en oracle

en ese caso debes utilizar el tipo de constraint check lo creas asi

alter table tabla add constraint chk_campo check (campo in (valor1,valor2... valor n));

o en otro caso

alter table tabla add constraint chk_campo check (campo between valor min and valor max);


Espero que te funcione....
  #3 (permalink)  
Antiguo 31/07/2009, 13:45
 
Fecha de Ingreso: mayo-2008
Mensajes: 51
Antigüedad: 13 años, 1 mes
Puntos: 2
De acuerdo Respuesta: Condicionar campo en oracle

BUENO DESCPUES DE UN RATO LLEGO A ESTO Y FUNCIONA BASTANTE BIEN, LAS OTRAS OPCIONES ERAN BUENAS PARA HABIA QUE CREAR LA TABLA: AQUI VA MI SOLUCION ESPERO QUE TAMBIEN LE SIRVA ALGUIEN. YO HICE UNA FUNCION

--AGREGAR "CREATE" PARA CREAR FUNCION
FUNCTION DOCS (p_letra VARCHAR2)
RETURN VARCHAR2
IS
v_letra varchar2(1);
error1 exception;

BEGIN
v_letra:=UPPER(p_letra);

IF v_letra IN ('C','O','N','F') THEN v_letra:=p_letra;
ELSE RAISE ERROR1;
END IF;

RETURN v_letra;
EXCEPTION

WHEN ERROR1 THEN RAISE_APPLICATION_ERROR(-20020,'SOLO PUEDEN IR LAS LETRAS C,O,N,o F');
END;

--PARA PROBAR
--SELECT DOCS('G') FROM DUAL

--> DOCS - NOMBRE DE LA FUNCION
--> p_letra - PARAMETRO PARA LA FUNCION
--> v_letra - VARIABLE DONDE SE ALMACENA LA FUNCION
  #4 (permalink)  
Antiguo 02/08/2009, 14:25
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 13 años, 7 meses
Puntos: 85
Respuesta: Condicionar campo en oracle

Hay diferentes consideraciones en este tema, muchos debaten continuamente sobre donde deben existir las reglas de integridad de datos, en estos casos hay dos opciones con sus pros y contras.

1. En código PL/SQL, esto incluye funciones, procedimientos, packages o triggers, donde los triggers están más cuestionados, lo malo de esto es que, para los casos de importación de datos externos, se puede pasar por alto las reglas, por ejemplo, un SQL*Loader, Import, etc.

2. En constraints, como lo comentado, una check, esto te protege del primer caso, pero la contra es que se pueden deshabilitar y pueden provocar que las aplicaciones generen datos incosistentes.

Tampoco hay nada de malo en ser ambiguo y utilizar las dos opciones en forma simultanea, en cualquier caso, es un tema de diseño y lo importante es ser consistente en el desarrollo.

Saludos
  #5 (permalink)  
Antiguo 03/08/2009, 05:43
 
Fecha de Ingreso: agosto-2009
Mensajes: 2
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Condicionar campo en oracle

Creo que la mejor opcion es hacer un trigger de bases de datos, PRE-INSERT y que sea este el que controle los valores a insertar.
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 22:16.