文档章节

sqlite3修改源码默认启用外键

b
 beyondhong
发布于 2016/02/18 18:07
字数 299
阅读 9
收藏 0

在开发一个嵌入式项目的时候用到数据库 选了sqlite3

而且用的是easysqlite(c++封装的接口)


测试过程中发现尽管代码中加了外键约束 但始终没有起作用

网上查了下 说sqlite3默认关闭外键的功能 需要手动打开

执行PRAGMA foreign_keys = ON;

在命令行下面是解决了,可是代码中怎么办....

找了好多网页都没有相关说明,然后突发奇想 将上面这条命令当作sql语句执行会怎样了(就相当于执行一条select语句)

结果竟然成功了,但是难道我必须要在打开数据库的时候都执行这条命令吗 不愿意善罢甘休

搜了下跟PRAGMA foreign_keys相关的源码 然后顺藤摸瓜 最终终于找到修改源码的地方

在sqlite3.c中的函数openDatabase里面在设置打开数据库标识的地方加上外键的标识就可以了

代码如下:

  db->flags |= SQLITE_ShortColNames | SQLITE_AutoIndex
//enbale foreign key
#if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
				 |SQLITE_ForeignKeys
#endif


© 著作权归作者所有

b
粉丝 0
博文 2
码字总数 858
作品 0
漳州
私信 提问
SQLite4 的设计

1.0 内容提要 SQLite4 是一个放在库中的紧凑的,自包含的,零维护的的ACID数据库引擎, 像SQLite3一样, 但具有改进的接口和文件格式. 运行时环境封装到了一个对象之中. 使用了一个很不错的键值...

oschina
2014/05/26
9.3K
22
【Qt笔记】编辑数据库外键

前面几章我们介绍了如何对数据库进行操作以及如何使用图形界面展示数据库数据。本章我们将介绍如何对数据库的数据进行编辑。当然,我们可以选择直接使用 SQL 语句进行更新,这一点同前面所说...

大道无名
2016/08/04
24
0
pyqt sqlite3 icu fts3 fts4 enabled 。全文搜索 功能

目标:windows下让pyqt测试程序支持sqlite3 icu fts3/4的全文搜索功能。 环境: windows XP pyqt 安装文件 PyQt-Py2.7-x86-gpl-4.9.6-1.exe pyqt 源码包 PyQt-win-gpl-4.9.4.zip python 版本...

kjpioo
2013/02/09
0
0
Python中轻量数据库SQlite3的使用

版权声明:本文为博主 一銤阳光 学习整理的文章,如需转载,请注明出处、附上CSDN博文链接。 https://blog.csdn.net/CSDNhuaong/article/details/80793573 1.写在前面 Python SQLITE数据库是...

一銤阳光
2018/06/24
0
0
tbox的裁剪和定制化编译

默认编译出来的tbox库,支持的功能比较全,带有所有模块,并且支持ssl(依赖polarssl/openssl)、gzip(依赖zlib)、database(依赖sqlite3/mysql)。 因此生成的库文件偏大,而且会依赖三个...

ruki
2015/12/05
83
2

没有更多内容

加载失败,请刷新页面

加载更多

spring mvc主流程源码阅读(剖析)

第一步,通过web.xml的配置可以知道,用户访问url第一次先走到DispatchServlet,(默认你学过基本的java的Servlet开发) <servlet><servlet-name>springServlet</servlet-name><serv......

小海bug
13分钟前
0
0
vmstat命令详解

https://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html

流光韶逝
48分钟前
1
0
如何理解算法时间复杂度的表示

先从O(1) 来说,理论上哈希表就是O(1)。因为哈希表是通过哈希函数来映射的,所以拿到一个关键 字,用哈希函数转换一下,就可以直接从表中取出对应的值。和现存数据有多少毫无关系,故而每次执...

yky20190625
今天
5
0
分布式架构 实现分布式锁的常见方式

一、我们为什么需要分布式锁? 在单机时代,虽然不需要分布式锁,但也面临过类似的问题,只不过在单机的情况下,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加锁的机制...

太猪-YJ
今天
9
0
GitLab Docker 安装记录

安装环境 环境Centos7.4 64 1.拉取镜像文件 docker pull gitlab/gitlab-ce:latest 2.docker 安装 git.zddts.com 为访问域名或换成可以访问的IP docker run -d --hostname git.***.com -p ......

侠者圣
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部