当前位置: 首页 > 面试题库 >

如何在sqlite 3.7.4中使ON DELETE CASCADE工作?

池麒
2023-03-14
问题内容

我检查了功能列表几次,看来级联应该起作用。当我执行此python脚本时:

#!/usr/bin/env python3
import sqlite3

print(sqlite3.sqlite_version)

con = sqlite3.connect(':memory:')

a = "create table a (id integer primary key, name text)"
con.execute(a)

b = "create table b (id integer primary key, r integer, foreign key(r) references a(id) on delete cascade)"
con.execute(b)
con.commit()

a = "insert into a (name) values (\"abc\")"
con.execute(a)
con.commit()

print(con.execute("select * from a").fetchall())

a = "insert into b (r) values (1)"
con.execute(a)
con.commit()

print(con.execute("select * from b").fetchall())

a = "delete from a where id=1"
con.execute(a)
con.commit()

print(con.execute("select * from b").fetchall())
print(con.execute("select * from a").fetchall())

我得到这些结果:

3.7.4
[(1, 'abc')]
[(1, 1)]
[(1, 1)]
[]

证明没有发生级联。我做错了什么或者要获得与层叠相同的结果的解决方案是什么?


问题答案:

出于兼容性目的,禁用了SQLite外键。您需要在每次连接到数据库后立即手动启用它们。

con.execute("PRAGMA foreign_keys = ON")



 类似资料:
  • 我正在通过log4j2(版本2.5)为部署到Wildfly 8.2服务器的ear应用程序(包括ejb和web应用程序)使用slf4j。 这就是父POM的外观: 模块的pom.xml是: 然后我放置了log4j2。xml到ear的META-INF文件夹中 在所有这些和应用程序部署之后,什么都没有发生,没有错误,也没有生成日志文件, 我认为Wildfly日志子系统可能会干扰它。所以我添加了jboss部

  • 这是一个PowerShell脚本,用于刷新Internet代理设置,我从批处理文件中获取该脚本,以禁用Internet选项代理服务器。 我想在批处理文件或命令提示符中作为单个命令运行它,例如 这是我从如何压缩PowerShell脚本以适合一行中学到的。 我试图将它完全合并成一行并执行它。 但它返回给我一个错误。 我该怎么解决呢?有没有更好的方法来浓缩上述函数?

  • 问题内容: 我需要在Java Web应用程序中使用UTF-8(servlets + JSP,不使用框架)以支持常规芬兰语文本和西里尔字母,例如特殊情况。 我的设置如下: 开发环境:Windows XP 生产环境:Debian 使用的数据库:MySQL 5.x 用户主要使用Firefox2,但也使用Opera 9.x,FF3,IE7和Google Chrome访问该站点。 如何实现呢? 问题答案:

  • GoogleSheets文档可以包含一些表单。第一个是默认值和“0”。一般情况下,任何工作表都有如下地址: https://docs.google.com/spreadsheets/d/(spreadsheetId)/编辑#gid=(sheetId) 同时具有和。 但是在API文档中没有提到如何使用。我只能读取和编辑给定的默认表格。 如果在来自示例性链接中显示的代码,我添加了属性,我得到错误:

  • 问题内容: 我还不能弄清楚如何在Swift中获取a的子字符串: 我无法在Swift中创建范围。在Playground中自动完成并不是超级有帮助-这说明: 我在Swift标准参考库中找不到任何有帮助的东西。这是另一个疯狂的猜测: 还有这个: 我看过其他答案(在SwiftString中查找字符的索引),似乎暗示着由于是的桥类型,因此“旧”方法应该起作用,但尚不清楚如何- 例如,这也不起作用(似乎不是有

  • 问题内容: 有没有已知的方法可以使IE中的CSS样式起作用? 问题答案: 有点晚了,但这也可能有用。有一个适用于IE 5.5+的IE过滤器,您可以应用: 但是,这会缩放整个图像以适合分配的区域,因此,如果您使用的是精灵,这可能会引起问题。