我在SQLite中创建一些表时遇到问题 - 外键不匹配。我希望有两个表(时间和节点)ID自动递增。在Node表中,我将不引用自动递增的ID,而是引用另一列(NODE_ID)。但是,由于我想使用Time表中的列作为一个主要的主键,我想到使用一个人工ID并引用它。
基于此和in this documentation,我创建了一个ID列,我不需要设置值。这有效。但是,在此表中插入一行后,我一直有外键不匹配,将行添加到其他表并尝试引用最近插入的时间行。 我想知道为什么......
**如何向表中添加多个外键?这在SQLite中是不可能的? **
我的表是:
CREATE TABLE Time (
ID integer NOT NULL,
SECOND integer NOT NULL,
MINUTE integer NOT NULL,
HOUR integer NOT NULL,
M_DAY integer NOT NULL,
MONTH integer NOT NULL,
YEAR integer NOT NULL,
W_DAY integer NOT NULL,
Y_DAY integer NOT NULL,
IS_DST integer NOT NULL,
SPAN integer NOT NULL,
PRIMARY KEY (ID, SECOND, MINUTE, HOUR, M_DAY, MONTH, YEAR, W_DAY, Y_DAY)
);
CREATE TABLE CpuUsage (
ID integer NOT NULL,
NODE_ID integer NOT NULL,
TIME_ID integer NOT NULL,
CORE_ID integer NOT NULL,
USER integer,
NICE integer,
SYSMODE integer,
IDLE integer,
IOWAIT integer,
IRQ integer,
SOFTIRQ integer,
STEAL integer,
GUEST integer,
-- /* Compound Primary Keys */
PRIMARY KEY(ID, NODE_ID, TIME_ID, CORE_ID)
-- /* Foreign keys */
FOREIGN KEY (NODE_ID)
REFERENCES Node(NODE_ID)
ON DELETE CASCADE
ON UPDATE CASCADE
FOREIGN KEY (TIME_ID)
REFERENCES Time(ID)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE Node (
ID integer NOT NULL,
NODE_ID integer NOT NULL,
PRIMARY KEY (ID, NODE_ID)
);
例如,这不起作用......
INSERT INTO Time (SECOND,MINUTE,HOUR,M_DAY,MONTH,YEAR,W_DAY,Y_DAY,IS_DST, SPAN) VALUES (13, 20, 13, 21, 11, 1011, 3, 354, 0, 0);
INSERT INTO CpuUsage (NODE_ID, TIME_ID, CORE_ID, USER, NICE, SYSMODE, IDLE, IOWAIT, IRQ, SOFTIRQ, STEAL, GUEST)
VALUES (1, 1, -1, 394784, 325834, 552058, 2334284, 136542, 2053, 3334, 0, 0 );