我绝不是数据库专家,所以我可能会问一些愚蠢的问题。
所以我正在使用 PostgreSQL,我想对一个表进行插入,保留 ID(ID 自动递增)并将一个元组插入另一个表(元组中有该 ID)。
显然我想让事情保持原子性。
询问:
WITH inserted AS (
INSERT INTO
"public"."user" (email, first_name, last_name, username)
VALUES
(?, ?, ?, ?)
RETURNING id
)
INSERT INTO
"public"."security" (user_id, security)
VALUES((
SELECT id FROM inserted
), ?);
Run Code Online (Sandbox Code Playgroud)
问题是,这甚至可以工作吗?如果第二次插入失败会发生什么?第一个会坚持下去吗?
显而易见的答案是,我可能会将其放入事务并提交/回滚,但这是否足够?