sqlite3修改源码默认启用外键

在开发一个嵌入式项目的时候用到数据库 选了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


你可能感兴趣的:(sqlite3修改源码默认启用外键)