【发布时间】:2021-09-16 07:04:53
【问题描述】:
我正在为一些可能很简单的事情而苦苦挣扎。 我正在使用带有 sequelize 和 typescript 的 postgrès SQL。
我想做的是创建两件事,一件作为另一件的参考,但如果创建一个失败,那么我不想提交任何东西。
这是我的代码,我试图在其中创建某人并分配给他一些鞋子。
CREATE TABLE User
(
id BIGSERIAL PRIMARY KEY,
firstname TEXT,
lastName TEXT
);
CREATE TABLE Shoes
(
id BIGSERIAL PRIMARY KEY,
size INTEGER NOT NULL,
idUser BIGINT REFERENCES User(id) NOT NULL
);
async function operations() {
const t = await sequelize.transaction();
try {
await User.create({
firstName: 'Bart',
lastName: 'Simpson'
}, { transaction: t });
await Shoes.create({
idUser: // here I want the id of my futur new creation (bart simpson)
size: 43
}, { transaction: t });
await t.commit();
} catch (error) {
await t.rollback();
}
}
operations.then(() => {/*do something*/})
问题是,我不知道如何获取新用户的未来 ID,如果数据库为空,或者如果我获得最新的 id 用户并添加1 然后我收到错误violates foreign key constraint。
我认为这是因为用户不存在于数据库中,但它存在于事务中。
如果有人可以帮助我:)
【问题讨论】:
标签: sql database typescript postgresql sequelize.js