Ver Mensaje Individual
  #5 (permalink)  
Antiguo 16/12/2010, 01:36
jc3000
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: Duda en Constraint formato de fecha y hora

Parece que oracle no te deja jugar con fechas en una check.

Prueba a crear un trigger before insert.

SQL > CREATE TABLE Carreras
2 (
3 CODCARRERA VARCHAR2(4),
4 FECHAYHORA DATE,
5 IMPORTEPREMIO NUMBER(6),
6 APUESTALIMITE NUMBER(5,2)
7 );

Tabla creada.

SQL >
SQL >
SQL >
SQL >
SQL > CREATE OR REPLACE TRIGGER PRUEBA_CHECK
2 BEFORE INSERT ON
3 CARRERAS
4 REFERENCING
5 NEW AS New
6 OLD AS Old
7 FOR EACH ROW
8 DECLARE
9 fechayhora_CHAR VARCHAR2(50);
10 BEGIN
11 fechayhora_CHAR := TO_CHAR(:NEW.FECHAYHORA,'DD-MM-YYYY HH24:MI:SS');
12 IF TO_DATE (FECHAYHORA_CHAR,'DD-MM-YYYY HH24:MI:SS') < TO_DATE('09:00:00', 'HH24:MI:SS') OR
13 TO_DATE (FECHAYHORA_CHAR,'DD-MM-YYYY HH24:MI:SS') > TO_DATE('14:00:00', 'HH24:MI:SS') THEN
14 RAISE_APPLICATION_ERROR(-20001,'HORA INCORRECTA ');
15 END IF;
16 END;
17 /

Disparador creado.

SQL > SELECT TO_CHAR(SYSDATE,'DD-MM-YYYY HH24:MI:SS') FROM DUAL;

TO_CHAR(SYSDATE)
-------------------
16-12-2010 08:34:41

SQL > INSERT INTO CARRERAS
2 ( CODCARRERA,FECHAYHORA,IMPORTEPREMIO,APUESTALIMITE)
3 VALUES
4 ('999',SYSDATE,1,66)
5 /
INSERT INTO CARRERAS
*
ERROR en línea 1:
ORA-20001: HORA INCORRECTA
ORA-06512: at "XXXXXX.PRUEBA_CHECK", line 7
ORA-04088: error during execution of trigger 'XXXXXX.PRUEBA_CHECK'


SQL >