我正在编写一个通过 python 创建 sqlite3 数据库的程序。我有一个作者表(AuthorID、Name)和第二个图书表(BookID、Title、AuthorID),我创建的这些表如下所示:
Authors = sqlite3.connect('Authors.db')
Authors.execute('''CREATE TABLE Authors
(AuthorID INT PRIMARY KEY,
Name TEXT);''')
Authors.close()
Books = sqlite3.connect('Books.db')
Books.execute('''CREATE TABLE Books
(BookID INT PRIMARY KEY,
Title TEXT,
AuthorID INT,
FOREIGN KEY(AuthorID) REFERENCES Authors(AuthorID));''')
Books.close()
然后我向每个表添加一条记录,如下所示:
Authors = sqlite3.connect('Authors.db')
Authors.execute("INSERT INTO Authors (AuthorID, Name) \
VALUES (1, 'Jane Austin')");
Authors.commit()
Authors.close()
Books = sqlite3.connect('Books.db')
Books.execute("INSERT INTO Books (BookID, Title, AuthorID) \
VALUES (1, 'Emma', 1)");
Books.commit()
Books.close()
数据库已正确更新,但我认为外键无法正常工作,因为它允许我删除作者“Jane Austin”(当有与之相关的书籍时)。
我见过一些教程使用这一行:
Books.execute("PRAGMA foreign_keys = 1")
这是问题的答案吗?如果是,我该把这条线放在哪里?