Objective c sqlite中的外键定义

Objective c sqlite中的外键定义,objective-c,sqlite,foreign-keys,Objective C,Sqlite,Foreign Keys,在Objective c中使用sqlite时,是否有任何方法可以定义表之间的关系并在表之间提供外键?您可以在sqlite中使用外键,方法与在其他sql数据库系统中使用外键的方法相同,但请注意,sqlite中的外键约束不会被检查/强制执行 SQLite不是一个“真正的”关系数据库,您可以有链接到其他表主键的字段,但您必须从代码中控制所有字段。 与删除相同,没有级联或其他完整性控件。您可以像在任何其他sql数据库系统中一样在sqlite中定义外键关系,但要实际执行它们,您需要额外的触发器。可以使用s

在Objective c中使用sqlite时,是否有任何方法可以定义表之间的关系并在表之间提供外键?您可以在sqlite中使用外键,方法与在其他sql数据库系统中使用外键的方法相同,但请注意,sqlite中的外键约束不会被检查/强制执行

SQLite不是一个“真正的”关系数据库,您可以有链接到其他表主键的字段,但您必须从代码中控制所有字段。
与删除相同,没有级联或其他完整性控件。

您可以像在任何其他sql数据库系统中一样在sqlite中定义外键关系,但要实际执行它们,您需要额外的触发器。可以使用sqlite官方发行版附带的工具从数据库方案自动编译这些内容


这个解决方案的最大优点是它与编程语言无关。一旦设置完成,您就不必再关心源代码中的触发器了。有关更多信息,请参阅。

如果您使用Cocoa CoreData框架并定义托管对象模型,使用SQLite作为持久存储-您可以指定模型之间的关系,并指定删除规则(如级联或拒绝),这些规则将在您从Objective-C更改实体时执行和验证,并在保存时提交回数据库

关系和规则与数据库外键规则非常相似,但由objective-C运行时内的CoreData框架执行。SQLite数据库只是用作托管对象图的持久性存储

在苹果开发者网站:


注意:这个框架是特定于Cocoa的,您的问题没有明确提到使用Cocoa,只是Objective-C

您可以通过向SQL create命令添加外键语句轻松创建外键

例如,当有个人和地址实体时:

  • 创建person表: 如果不存在,则创建表PERSON(ID INTEGER主键自动递增、FIRSTNAME文本、LASTNAME文本)

  • 创建地址表: 如果不存在,则创建表地址(ID整数主键自动递增、STREETNAME文本、STREETNUMBER INT、PERSONID INT、外键(PERSONID)引用PERSON(ID))

这将地址表的PERSONID列标记为指向PERSON表的ID列的外键

您还可以在以下网址找到完整教程:

您可以在SQLite中为外键关系设置一个标志。 步骤1:转到SQLItemManager中的工具菜单

步骤2:打开“连接SQL”选项卡

步骤3:设置“PRAGMA foreign_keys=ON;”并保存它

您可以使用数据库作为正常的PK和FK关系


谢谢。

有可用的示例代码吗?我想使用Objective cI以编程方式实现它,不知道Objective-C,只知道SQLite。表“table1”中有1个字段pk_table1,表“table2”中有1个字段fk_table1。如果更新“fk_table1”,在Objective-C代码中,检查新值是否存在于“pk_table1”中,依此类推。。。还没有找到任何其他方法来做这件事。看到了吗