Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/01/2008, 09:36
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años, 1 mes
Puntos: 85
Re: Alguien le puede ver el error? en oracle

Hola,

1. Habria que cambiar esto
Código:
IF(:NEW.LUG_TP_LUGAR_CH<>'Continente'...
por esto
Código:
IF(:NEW.LUG_TP_LUGAR<>'Continente'...
LUG_TP_LUGAR_CH es el nombre de la constraint, no del campo.

2. Tambien hay que cambiar
Código:
IF(:NEW.LUG_TP_LUGAR_CH<>'Continente' OR 
    :NEW.LUG_TP_LUGAR<>'Reino' OR 
    :NEW.LUG_TP_LUGAR<>'Pais' OR 
    :NEW.LUG_TP_LUGAR<>'Estado') THEN
por
Código:
IF(:NEW.LUG_TP_LUGAR<>'Continente' AND 
    :NEW.LUG_TP_LUGAR<>'Reino' AND 
    :NEW.LUG_TP_LUGAR<>'Pais' AND 
    :NEW.LUG_TP_LUGAR<>'Estado') THEN
3. ¿Por que una doble validacion?, tienes la constraint y el trigger que hacen lo mismo.

4. Tambien tienes la opcion de generar un procedimiento o package que de de alta el registro con previa validacion de datos
Código:
procedure Insertar_Lugar(Nombre, Tipo)
Asi, si los datos son invalidos, no te hace falta llegar al INSERT, ya que puedes generar una excepcion dentro del procedimiento.

Saludos