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