【发布时间】:2017-07-26 11:01:35
【问题描述】:
我正在开发 C# 项目,并且正在使用 system.data.sqlite。我创建了 3 个(相关)表
create table students(
_id integer primary key,
fname text not null,
lname text not null,
st_number integer not null unique,
level integer not null,
class integer,
FOREIGN KEY (class) REFERENCES classes(_id) on delete cascade on update cascade,
FOREIGN KEY (level) REFERENCES levels(_id) on delete cascade on update cascade)
create table payments(
_id integer primary key,
student integer not null,
amount integer not null,
recieve_date text not null,
type text not null,
foreign key(student) references students(st_number) on update cascade on delete cascade)
create table signups(
_id integer primary key,
student integer not null,
service integer not null,
foreign key(student) references students(st_number) on update cascade on delete cascade,
foreign key(service) references services(_id) on update cascade on delete cascade)
现在,当我尝试从学生表中删除一条记录时,我收到一个 FK 违规错误,而我希望它会从支付和注册表中删除所有连接的条目。
这可能与我在 sqlite 中打开 FK 支持的方式有关。我在我的连接字符串中打开它
@"Data Source=" + dbPath + ";Version=3;foreign_keys = 1;"
抱歉,创建语句太长了。非常感谢任何帮助。
【问题讨论】:
-
I get a FK violation error你能给出exact异常详情吗? -
@mjwills SQLite 的 FK 约束违规错误消息不包含详细信息。
-
请提供一些示例数据。 (请参阅How to format SQL tables in a Stack Overflow post? 了解如何添加。)
-
SQLite's error message for a FK constraint violation does not contain details.能不能提供一下截图? -
@mjwillis 你的意思是这样想的吗?tinypic.com/r/jhzb4z/9