0

我正在使用 Node 并且sqlite3我正在尝试插入到 SQLite 表以及连接表中。因为我想强制执行我使用的外键

database.run(`PRAGMA foreign_keys = ON`);

打开数据库文件时。

我的交易做了以下事情:

插入主表 对于每个相关项目,插入联结表(如果提供了错误的外键,这可能会失败) 如果插入主表或联结表值之一失败,则必须回滚整个事务。

我的问题是,如果相关项目包含无效的外键sqlite3不会返回错误,而是调用成功回调允许提交事务(事务仅在错误回调中回滚)。

此外,节点抛出一个Rejection unhandled error(我将我的database.run调用包装成一个承诺)但是我创建的任何承诺都不会抛出拒绝(堆栈跟踪显示一些内部函数),所以我不知道如何处理该拒绝,以及如何以防止事务被提交。

4

0 回答 0