建表语句如下:
CREATE  TABLE  student
  (sno NUMBER(6) CONSTRAINT s1 PRIMARY KEY,
   sname CHAR(6) CONSTRAINT s2 NOT NULL,
   sex CHAR(2)  CONSTRAINT s3 CHECK(sex IN('男','女')),
   birthday DATE CONSTRAINT s4 CHECK(birthday   between to_date('1900-12-31','yyyy-mm-dd') and to_date('2100-12-31','yyyy-mm-dd')),
  dno CHAR(3)  CONSTRAINT s5 REFERENCES dep(dno))
   TABLESPACE "SYSTEM" 
   PCTFREE  10
   PCTUSED  40
   INITRANS 1 
   MAXTRANS 255 
  STORAGE(INITIAL 12K 
                      NEXT 12K 
                      PCTINCREASE 50
                      MINEXTENTS  1
                      MAXEXTENTS 249);
本想插入如下数据
insert into student
   values(95001,'李勇','男',1987-12-15,'CS');
执行后报错:
   values(95001,'李勇','男',1987-12-15,'CS')
                                   *
ERROR 位于第 2 行:
ORA-00932: 数据类型不一致
但执行如下语句
insert into student
   values(95001,'李勇','男',SYSDATE,'CS');

显示
已创建 1 行。
在企业管理控制台下查看表的数据也发现,DATE格式不是预期的年-月-日格式,似乎约束没起作用。新学orcle,期盼热心人指导。谢谢。

解决方案 »

  1.   

    insert into student 
       values(95001, '李勇', '男',to_date(1987-12-15,'yyyy-mm-dd'), 'CS'); 
      

  2.   

    谢谢mantisXF枫の叶,此问题解决,接分。当初一直想怎么直接输入XXXX-XX-XX达成效果,而且想从表编辑器中看到相同效果,一直以为是约束问题,没从插入语句上着手。
    还请问一下
    1。 查询结果为:      
    SNO SNAME  SE BIRTHDAY   DNO
    ---------- ------ -- ---------- ---
    95001 李勇   男 15-12月-87 CS

    在表编辑器中BIRTHDAY是15-十二月-1987 12:00:00 AM,而查询结果却是15-12月-87
    2。是否可以直接插入XXXX-XX-XX格式的日期达成效果,当然表定义中birthday最好是日期类型的?
      

  3.   

    1:Oracle 显示结果的问题2:不管怎样,如果birthday是date型的,那插入的数据就必须是date型的