SQL新手如何插入父表和子表?
假设下表
import { integer, pgTable, serial, text } from 'drizzle-orm/pg-core';
export const users = pgTable('user', {
id: serial('id').primaryKey(),
name: text('name'),
});
export const tokens = pgTable('token', {
id: serial('id').primaryKey(),
userId: text("userId").notNull().references(() => users.id, { onDelete: "cascade" }),
token: string("token"),
});
要使用令牌创建新用户...我觉得手动看起来像这样…
const newUser = await db.insert(users).values({name: "Billy"}).returning();
const token = await db.insert(token).values({userId: newUser.id, token: "123"}).returning();
这是正确的方法吗?或者这个事务应该使用视图或事务吗?
1条答案
按热度按时间cld4siwp1#
请注意,我对毛毛雨和CRUD SQL的东西也很陌生,所以可能有一种“更好”的方法来做到这一点,但我相信您需要将其 Package 在transaction中。
基本上,您将返回您创建的新用户的
id
,并使用它在tokens
表中插入一条新记录(这是您已经在做的事情),但是如果发生错误,数据库将“回滚”,什么也不会发生。