以下sql语法有什么错误啊CREATE TABLE SchGradeInfo
(
INDEX LSH  NUMBER(10) AUTO_INCREMENT,
XXDM VARCHAR2(12) NOT NULL,
NJBM VARCHAR2(10) NOT NULL,
NHMC VARCHAR2(20),
NHBS NUMBER(5),PRIMARY KEY (XXDM,NJBM)
)
高手帮忙解释一下lsh 字段为自增
xxdm,njbm两个字段为主键
怎么写啊?

解决方案 »

  1.   

    首先oracle没有自增长的字段,可以使用插入一个序列来实现自动加1
    此外主键的写法不对可以参考如下:
    -- Create table
    create table fff
    (
      INDEX LSH  NUMBER(10) ,
    XXDM VARCHAR2(12) NOT NULL,
    NJBM VARCHAR2(10) NOT NULL,
    NHMC VARCHAR2(20),
    NHBS NUMBER(5),
    )
    ;
    -- Create/Recreate primary, unique and foreign key constraints 
    alter table fff
      add constraint ffsd primary key (XXDM ,NJBM );
    创建一个序列后在插入数据的时候可以保证字段自动增长如创建了序列xh
    如:插入数据的时候insert into fff values(xh.nextval.
      

  2.   

    电脑有问题,没有写完,反正后面你应该知道,和一般的sql语句一样
      

  3.   

    看的不太明白,你上面的语句是怎么实现了lsh字段的自增啊?ps:
    我使用的pl/sql developer去创建table
      

  4.   

    我来改改:创建表(如果表名要严格区分大小写的话,表名要加双引号。)
    CREATE TABLE "SchGradeInfo" 
    (
    LSH  NUMBER(10) ,
    XXDM VARCHAR2(12) ,
    NJBM VARCHAR2(10) ,
    NHMC VARCHAR2(20),
    NHBS NUMBER(5),
    CONSTRAINT PK_SchGradeInfo PRIMARY KEY ON(XXDM,NJBM)
    );创建一个序列XH_SEQ:
    CREATE SEQUENCE LXH_SEQ INCREMENT BY 1 START WITH 1 NOMAXVALUE;插入数据的时候i
    nsert into "SchGradeInfo"(lxh,...) 
    values(lxh.nextval,...);
      

  5.   

    CREATE TABLE "SchGradeInfo" 
    (
    LSH  NUMBER(10) ,
    XXDM VARCHAR2(12) NOT NULL,
    NJBM VARCHAR2(10) NOT NULL,
    NHMC VARCHAR2(20),
    NHBS NUMBER(5),
    );
    CREATE SEQUENCE LXH_SEQ INCREMENT BY 1 START WITH 1 NOMAXVALUE;CREATE TABLE "SchGradeInfo" ADD PRIMARY KEY(XXDM,NJBM);