У меня есть запрос на автоматическое увеличение базы данных sqlite - PullRequest
0 голосов
/ 31 января 2012

У меня есть следующая база данных:

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 голосов
/ 31 января 2012

В FAQ по SQLite :

Столбец, объявленный 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)
);
0 голосов
/ 31 января 2012

Вам нужно: QUES_ID INTEGER PRIMARY KEY AUTOINCREMENT

0 голосов
/ 31 января 2012

Попробуйте вставить данные следующим образом:

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

Поскольку вы не упоминаете в запросе столбец автоинкремента, а также вы не упомянули NOT NULL , поэтому он будет пропущенввод данных для этого столбца.

0 голосов
/ 31 января 2012

Попробуйте QUES_ID AUTO_INCREMENT

и действительно, если вы всегда хотите, чтобы это было там, сделайте это

QUES_ID MEDIUMINT NOT NULL AUTO_INCREMENT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...