0
這裏是我的表:如何插入兩個與foreign_keys相關的表中?
CREATE TABLE thread
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
post_id INTEGER,
FOREIGN KEY(post_id) REFERENCES post(id)
);
CREATE TABLE post
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
message TEXT,
thread_id INTEGER,
user_id INTEGER,
FOREIGN KEY(thread_id) REFERENCES thread(id),
FOREIGN KEY(user_id) REFERENCES user(id)
);
我有一個包含第一個帖子的ID(作者的文章)一個線程表。
如果我想在現有的主題中插入新帖子,很容易,因爲我知道thread_id
。
但是,如果我想創建一個新線程,我需要知道該帖子的post_id
還不存在。
在我的倍數的SQL查詢和倍數做的那一刻承諾:
cur = db.execute("""
INSERT INTO post (content, user_id)
VALUES(?, ?, ?)""", [content, user_id])
db.commit()
post_id = cur.lastrowid
cur = db.execute("""
INSERT INTO thread (title, post_id)
VALUES(?, ?, ?)""", [title, post_id])
db.commit()
thread_id = cur.lastrowid
db.execute("""
UPDATE post
SET thread_id = ?
WHERE id=?""", [thread_id, post_id])
db.commit()
但它很醜陋,我認爲這是一個更好的解決方案。 如果我可以做這樣的事情,這將是完美的,但它是不允許的:
INSERT INTO thread(title)
VALUES("thread 1");
INSERT INTO post(post, thread_id)
VALUES("first post of thread 1", LAST_INSERT_ROWID() AS tmp);
UPDATE thread
SET post_id = LAST_INSERT_ROWID()
WHERE id = tmp;
任何想法?
謝謝!