我在sqlite数据库中查询了自动增量

时间:2012-01-31 04:59:01

标签: sqlite

我有以下数据库:

CREATE TABLE QUESTION (
    QUES_ID  INTEGER AUTO INCREMENT,
    TOPIC_ID INTEGER NOT NULL,
    QUESTION_DESC TEXT NOT NULL,
    CHOICE_A TEXT,
    CHOICE_B TEXT,
    CHOICE_C TEXT,
    CHOICE_D TEXT,
    PRIMARY KEY (QUES_ID,TOPIC_ID),
    FOREIGN KEY (TOPIC_ID) REFERENCES TOPIC(TOPIC_ID)
);

当我插入这样的信息时......

INSERT INTO 
    QUESTION (TOPIC_ID,QUESTION_DESC,CHOICE_A,CHOICE_B,CHOICE_C,CHOICE_D)
VALUES 
    (1,'Blue or blue?','red?','yellow?','black?','yellow again?');

我得到以下结果,ques_id没有被分配!

QUES_ID     TOPIC_ID   QUESTION_DESC  CHOICE_A  CHOICE_B  CHOICE_C  CHOICE_D     
----------  ---------  -------------  --------- --------- --------- -------------
             1         Blue or blue?  red?      yellow?   black?    yellow again?

4 个答案:

答案 0 :(得分:0)

尝试QUES_ID AUTO_INCREMENT

真的,如果你总是想让它成为那里的话

QUES_ID MEDIUMINT NOT NULL AUTO_INCREMENT

答案 1 :(得分:0)

您需要: QUES_ID INTEGER PRIMARY KEY AUTOINCREMENT

答案 2 :(得分:0)

尝试插入如下数据:

INSERT INTO QUESTION values (1,'Blue or blue?','red?','yellow?','black?','yellow again?');

由于您未在查询中提及自动增量列,并且您没有提及 NOT NULL ,因此它将跳过输入该列的数据。

答案 3 :(得分:0)

根据SQLite FAQ

  

声明为INTEGER PRIMARY KEY的列将自动增量。

所以你的DDL语句看起来应该更像:

CREATE TABLE QUESTION (
    QUES_ID INTEGER PRIMARY KEY,
    TOPIC_ID INTEGER NOT NULL,
    QUESTION_DESC TEXT NOT NULL,
    CHOICE_A TEXT,
    CHOICE_B TEXT,
    CHOICE_C TEXT,
    CHOICE_D TEXT,
    -- the primary key must be QUES_ID 
    -- if you want it to auto-increment
    -- so if you really want you can add 
    -- a unique constraint here
    CONSTRAINT qt UNIQUE (QUES_ID, TOPIC_ID),
    FOREIGN KEY (TOPIC_ID) REFERENCES TOPIC (TOPIC_ID)
);
相关问题