【发布时间】:2013-02-09 18:30:16
【问题描述】:
我有一个用 sqlite3 制作的数据库,并已将外键设置为 student 表和 book 表以停止重复贷款:
使用创建表:
CREATE TABLE loan(
SudentID INTEGER,
ISBN INTEGER,
out INTEGER,
FOREIGN KEY(SudentID)
REFERENCES student(SudentID)
ON DELETE CASCADE
FOREIGN KEY(ISBN)
REFERENCES book(ISBN)
ON DELETE CASCADE
)
CREATE TABLE student(
SudentID INTEGER PRIMARY KEY,
First TEXT,
Last,
Contact Text,
Year INTEGER)
CREATE TABLE book(
ISBN INTEGER PRIMARY KEY,
Title TEXT,
Price INTEGER,
Qty INTEGER,
Subject TEXT)
如果我尝试在 贷款表 中插入重复记录,则外键 不会 阻止它。
Pragma 在代码和 Firefox 数据库设置中均已开启。
版本是2.6.0
我的解决方法是使用 Distinct 过滤掉重复项,但是当我将此数据库用作教学工具时,有什么方法可以激活它们。但是cascade delete 不起作用!为什么?
【问题讨论】:
标签: sql sqlite composite-primary-key