我正在使用 Node 并且sqlite3
我正在尝试插入到 SQLite 表以及连接表中。因为我想强制执行我使用的外键
database.run(`PRAGMA foreign_keys = ON`);
打开数据库文件时。
我的交易做了以下事情:
插入主表 对于每个相关项目,插入联结表(如果提供了错误的外键,这可能会失败) 如果插入主表或联结表值之一失败,则必须回滚整个事务。
我的问题是,如果相关项目包含无效的外键sqlite3
不会返回错误,而是调用成功回调允许提交事务(事务仅在错误回调中回滚)。
此外,节点抛出一个Rejection unhandled error
(我将我的database.run
调用包装成一个承诺)但是我创建的任何承诺都不会抛出拒绝(堆栈跟踪显示一些内部函数),所以我不知道如何处理该拒绝,以及如何以防止事务被提交。