我有以下数据库:
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?
答案 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)
);