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

SQLite3“ orgets”使用外键

裘嘉树
2023-03-14
问题内容

我将Ruby与SQLite3结合使用,但不幸的是,我在Sqlite3中使用外键的尝试均未成功。根据sqlite3 --version,安装了版本3.7.13。据我所知,Sqlite3从3.6.x版本开始支持外键。

我知道默认情况下外键是禁用的,必须使用来激活PRAGMA foreign_keys = ON;。在我的db-create-script
Ruby中,我正在执行以下操作:

sql = <<-SQL
  PRAGMA foreign_keys = ON;
  CREATE TABLE apps (
    id ....
  );
  CREATE TABLE requests (
    ...
    app_id INTEGER NOT NULL,
    FOREIGN KEY(app_id) REFERENCES apps(id),
  );
  ...
SQL
db.execute_batch(sql)

不幸的是,我可以愉快地将行插入requests未知的应用程序ID,它可以工作,但当然不行。

有趣的是:直接使用sqlite3 shell,我可以观察到以下行为:

$ sqlite3 database.db
sqlite> PRAGMA foreign_keys = ON;
sqlite> PRAGMA foreign_keys;
1 // as expected
sqlite> .quit
$ sqlite3 database.db
sqlite> PRAGMA foreign_keys;
0 // off ?!

不退出sqlite3的外壳,外键 正在 激活他们(而不是退出Shell)后 我不能 与未知app_ids插入行。


问题答案:

我想我可以回答我自己的问题:文档说:外键约束默认情况下是禁用的(为了向后兼容),因此必须分别为 每个数据库连接
启用外键约束。烦人,但现在终于可以使用了。



 类似资料:
  • 9.4.1.2.使用 sqlite3 Android 附带了一个命令行工具sqlite3,供我们访问数据库。 要验证数据库原型是否正确,你需要: 打开终端或者命令提示符。 输入adb shell,连接到仿真器或者真机。 切换到数据库所在的目录:cd/data/data/com.marakana.yamba/databases/。 通过sqlite3timeline.db打开数据库。 打开数据库之后

  • 问题内容: 我想编译以使用osx。使用以下命令:GOOS = linux GOARCH = arm CGO_ENABLED = 1 go build -o foo main.go 但我得到:运行时/ cgo叮当声:错误:编译期间未使用参数:’-mno-thumb’ 我使用了这个包:https : //github.com/mattn/go- sqlite3 我尝试了提示:https : //git

  • 我正试图从表用户中删除一条记录。 尝试用DELETE-语句(从user_id=10的用户中删除)以及在我的DB浏览器中删除它,但我得到了上面的错误,特别是它说:“删除记录错误:外键不匹配-”games“引用”groups“(从”main“中删除。”users“WHERE rowid in('10');)”。在我的架构下面: 创建表'group'('group_name'VARCHAR(255)NO

  • sqlite3pp 该库对SQLite3 API使用C++类进行包装,支持几乎所有SQLite3功能(打开数据库、查询、执行命令、事物等)。 示例代码如下: database 数据库 sqlite3pp::database db("test.db");db.execute("INSERT INTO contacts (name, phone) VALUES ('Mike', '555-1234')

  • 问题内容: 我有一个普通的Node.js脚本,该脚本通过API从Wikipedia中提取数据并将其存储在SQLite数据库中。我正在使用此node- sqlite3 模块。 在某些情况下,我要提取多达60万篇文章中的数据,并在数据库中连续存储有关每篇文章的一些元数据。从API中以500为一组检索文章。 检索带有500条文章中的数据的JSON对象的请求将对象传递给此回调: 这些模块默认情况下并行运行

  • 本文向大家介绍iOS 原生sqlite3的使用方法,包括了iOS 原生sqlite3的使用方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍了iOS 原生sqlite3的使用方法,分享给大家,具体如下: SQLite? SQLit是一个开源、轻型嵌入式关系数据库,诞生于2000年5月 占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 能够支持Windows/Linux/Unix等