【发布时间】:2021-05-16 14:18:07
【问题描述】:
我有两个非常简单的表,它们之间没有任何约束:
CREATE TABLE groups (groupId INTEGER PRIMARY KEY AUTOINCREMENT, groupName TEXT)
CREATE TABLE savedRuns (runId INTEGER PRIMARY KEY AUTOINCREMENT, runName TEXT, groupId INT NULL, startTime TEXT, stopTime TEXT, elapsedMilliseconds INT)
每当我从group 表中删除一个条目时,savedRuns 中具有相同groupId 的条目也会被删除。 我不想这样!
这是删除查询:
DELETE FROM groups WHERE groupId = 1
我无法理解这种行为,因为两个表之间没有外键约束!
我在我的 React Native 应用程序中使用来自 expo-sqlite 库的 SQlite。
我的最终目标是启用外键并在savedRuns 表中将groupId 设置为null,但我认为我应该先解决第一个问题。
我什至跑了PRAGMA foreign_keys 结果为0
【问题讨论】:
-
如果您确定两个表之间没有外键约束,然后检查触发器。
-
select * from sqlite_master where type = 'trigger'返回一个空数组。我想在我创建它们之前不会有任何触发器? -
您描述的行为与您问题中的表定义不一致。级联删除仅在外键约束或触发器强制执行时才会发生。
-
是的,这也是我的理解。我会进一步调查......也许我的删除功能有问题......
标签: react-native sqlite expo-sqlite