Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: |Miguel| en 22 Diciembre 2011, 13:52 pm



Título: Problema con restricciones al crear una tabla (SQL, Oracle)
Publicado por: |Miguel| en 22 Diciembre 2011, 13:52 pm
Buenas a todos.
Ante todo, Feliz Navidad y espero q haya habido suerte con la Lotería... a mi me han caído 5€ de *****.. pero bueno algo es algo  :xD, al tema

Tengo esta sentencia:

Código
  1. CREATE TABLE EMPLEADO(
  2. COD NUMBER(4),
  3. NOMBRE VARCHAR2(20),
  4. APELLIDO1 VARCHAR2(20),
  5. APELLIDO2 VARCHAR2(20),
  6. DIRECCION VARCHAR2(30),
  7. TELEFONO VARCHAR2(14),
  8. DNI VARCHAR2(9),
  9. F_NACIMIENTO DATE,
  10. NACIONALIDAD VARCHAR2(15),
  11. SEXO VARCHAR2(6),
  12. FIRMA NUMBER(4),
  13. SALARIO NUMBER (7,2),
  14. CONSTRAINT PK_EMPLEADO PRIMARY KEY (COD),
  15. CONSTRAINT CH_SALARIO CHECK(SALARIO>0),
  16. CONSTRAINT CH_FNACIMIENTO CHECK(F_NACIMIENTO<SYSDATE),
  17. CONSTRAINT CH_SEXO CHECK (SEXO IN ("HOMBRE","MUJER", "hombre", "mujer"))
  18. );

Y las restricciones de F_NACIMIENTO y de SEXO no le gustan demasiado... Básicamente lo que quiero es obligar a que la fecha de nacimiento sea siempre menor a SYSDATE y que el sexo sea uno de los que están puestos ahí...

Errores que da:
  • F_NACIMIENTO: ORA-02436: variable de sistema o de fecha especificada erróneamente en restricción de control (CHECK)
  • SEXO: ORA-00904: "mujer": identificador no válido

En el de sexo, sale "mujer" como no válido por ser el último de la lista.
Gracias a todos.

Un saludo y Feliz Navidad. :rolleyes:


Título: Re: Problema con restricciones al crear una tabla (SQL, Oracle)
Publicado por: |Miguel| en 27 Diciembre 2011, 13:40 pm
Por lo visto nadie sabe nada de esto así que si no se puede hacer a nivel de create table lo dejaré para un Procedure en PL/SQL...
Gracias.