16/12/2010, 01:36
|
| | Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 5 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 > |