ON DELETE CASCADE无法正常工作在ios中的sqlite3中

ON DELETE CASCADE无法正常工作在ios中的sqlite3中,第1张

概述通过启用pragma foreignkeys ON,我以编程方式在ios中创建了一个.sqlite文件 NSFileManager *theFileManager = [NSFileManager defaultManager]; if ([theFileManager fileExistsAtPath:[self getDatabasePath]] == NO) { 通过启用pragma foreignkeys ON,我以编程方式在ios中创建了一个.sqlite文件

NSfileManager *thefileManager = [NSfileManager defaultManager];    if ([thefileManager fileExistsAtPath:[self getDatabasePath]] == NO)    {        char *theError;        const char *databasePath = [[self getDatabasePath] UTF8String];        const char *enableForIEnKey = [@"PRAGMA foreign_keys = ON;" UTF8String];        if (sqlite3_open(databasePath,&mDatabase) == sqlITE_OK)        {            if (sqlite3_exec(mDatabase,enableForIEnKey,NulL,&theError)!=sqlITE_OK)            {                DEBUGLOG(kCreatetableError,sqlite3_errmsg(mDatabase));            }            sqlite3_close(mDatabase);        }        else {            DEBUGLOG(KFailedToCreateDBfile);        }    }

Pragma外键正在启用但是,我创建了两个表,如下所示,创建查询包括ON DELETE CASCADE
//第一个表创建查询

@"CREATE table IF NOT EXISTS Session (sessionAppID INTEGER PRIMARY KEY  NOT NulL,sessionID VARCHAR(255) NOT NulL,userappid INTEGER,deviceAppID INTEGER NOT NulL,sessionStartTime VARCHAR(255) NOT NulL,sessionEndTime VARCHAR(255),sessionCreatedDateTime VARCHAR(200) NOT NulL,sessionUpdatedDateTime VARCHAR(200) NOT NulL,sessionFailureCount INTEGER NOT NulL,sessionStatus INTEGER NOT NulL,FOREIGN KEY(userappid) REFERENCES User(userappid),FOREIGN KEY(deviceAppID) REFERENCES Device(deviceAppID))"

//第一个表查询的子表的第二个表

@"CREATE table IF NOT EXISTS EventLog (eventLogAppID INTEGER PRIMARY KEY  NOT NulL,eventGUID VARCHAR(255) NOT NulL,sessionAppID INTEGER NOT NulL,eventname VARCHAR(255) NOT NulL,eventGroupGUID VARCHAR(255),eventParentGUID VARCHAR(255),eventcategory INTEGER NOT NulL,eventStartTime VARCHAR(255) NOT NulL,eventEndTime VARCHAR(255),eventDuration VARCHAR(255),eventType INTEGER NOT NulL,eventCreatedDateTime VARCHAR(200) NOT NulL,eventUpdatedDateTime VARCHAR(200) NOT NulL,eventFailureCount INTEGER NOT NulL,eventStatus INTEGER NOT NulL,FOREIGN KEY(sessionAppID) REFERENCES Session(sessionAppID)ON DELETE CASCADE)"

在删除会话记录时,只有会话记录正在删除eventLog记录没有删除,可以请任何人帮忙,这将是什么问题.通过我使用sqlite3版本3.7.1的方式

解决方法 请参见 http://www.sqlite.org/foreignkeys.html#fk_enable.请注意,您需要为每个连接启用外键.

据推测,您正在创建一个新连接来执行删除查询.更新代码,以便每次打开数据库连接时,都可以根据需要设置编译指示.

总结

以上是内存溢出为你收集整理的ON DELETE CASCADE无法正常工作在ios中的sqlite3中全部内容,希望文章能够帮你解决ON DELETE CASCADE无法正常工作在ios中的sqlite3中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1065794.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存