名称 类型        可为空 默认 存储 注释
ID NUMBER                   N 标识(加1)
NETID VARCHAR2(15)          N 网络服务商
CINEMAID VARCHAR2(15) N
CINEMATYPE VARCHAR2(2) Y            0
CREATEDATE VARCHAR2(10) N to_char(sysdate,'yyyy-mm-dd')
AUTOAPP VARCHAR2(2) Y 0这个是CiName表 
我插入数据的语句是INSERT INTO CiName(netid,cinemaid,cinematype,autoapp) VALUES('TEST','gyl123','0','0')

提示错误
cannot Insert  Null Into ("MySchool","CiName","ID")但是ID是标识了 为什么还是提示啊 难道我的Sql不对吗

解决方案 »

  1.   

    提示的很明确了
    你的ID列没有指定值,你的insert语句指定的是netId
      

  2.   

    ID 是标识列 系统自动生成 Sql语句中还要写?怎么写?
      

  3.   

    你只是在建表的时候做了个自增长的标识列,oracle比较烦,看下面的语句吧CREATE SEQUENCE sequence
    [INCREMENT BY n]
    [START WITH n]
    [{MAXVALUE n|NOMAXVALUE}]
    [{MINVALUE n|NOMINVALUE}]
    [{CYCLE |NOCYCLE}]
    [{CACHE n|NOCACHE}];
    INCREMENT BY--指定步长
    START WITH--指定初始值
    MAXVALUE--定义序列生成的最大编号.默认的MAXVALUE就是NOMAXVALUE,对于递增序列为10^27,对于递减序列为-1
    MINVALUE--定义序列的最小编号,默认的MINVALUE为NOMINVALUE,对于递增序列为1,递减序列为-10^26.
    CYCLE--配置序列在达到界限值时重复编号
    NOCYCLE--达到界限值时不重复编号,这是默认值,当你试图生成MAXVALUE+1时将返回异常.
    CACHE--定义在内存中保留的序列编号块的大小,默认值为20.
    NOCACHE--强制数据词典对于生成的每个序列编号进行更新,保证在生成的编号中没有空缺,但这样会降低性能.
      

  4.   

    oracle里是要写的,一般这种标识列都写个Sequences,插入值的时候用。
    如Sequences的名称为a,插入时要写a.nextval
      

  5.   

    你的 ID NUMBER 是自增的吗,那你应该用sequence啊 sequence_name.nextval
      

  6.   

    SELECT * FROM user_objects WHERE object_type='SEQUENCE';
      

  7.   

    找到一些 数据 我应该找那个字段 与 我的表的Sequences对应啊
      

  8.   


    sequence 是全局的,你先查看一下你表里最大的ID 是多少,然后 查看每个sequence的sequence_name.currval(select sequence_name.currval from dual; ),然后用大于ID的那个sequence就可以了
      

  9.   


    select sequence_name.currval from dual这个貌似不对吧
      

  10.   

    如果sequence从未被使用过select sequence_name.currval from dual就会报错,那就用select sequence_name.nextval from dual
      

  11.   

    我知道了谢谢 Oracle数据库有个和我表前面差不多的字段后面我就了解了 OK
      

  12.   

    不要把SQLSERVER得东东拿来直接用~