【发布时间】:2021-10-04 07:04:52
【问题描述】:
我想一次性将数据插入到多个相关表中 - 在单个事务中。我正在使用 Postgres 和 Dapper ORM。这是我的查询:
WITH userins AS (
INSERT INTO public."user"
(
"FirstName",
"LastName",
"Email",
"PasswordHash",
"Address",
"City",
"State",
"Zip",
"Phone",
"IsEnabled",
"IsVerified",
"IsDeleted",
"CreatedDate",
)
VALUES (@FirstName, @LastName, @Email, @PasswordHash, @Address, @City, @State, @Zip, @Phone, @IsEnabled, ?IsVerified, ?IsDeleted, @CreatedDate);
RETURNING id AS user_id
)
, clientins AS (
INSERT INTO public.client( "Description", "PlanCustomerId", "IsActive", "IsDeleted", "CreatedBy", "CreatedDate", userid)
VALUES(@Description, @PlanCustomerId, @IsActive,@IsDeleted, user_id, @CreatedDate,user_id) RETURNING id as client_id;
)
, clientsubins
(
INSERT INTO public.client_subscription(
"PlanId",
"IsActive",
"StartDate",
"EndDate",
"IsDeleted",
"CreatedBy",
"CreatedDate",
clientid,
subscriptionid)
VALUES (@PlanId, @IsActive, @StartDate, @EndDate, @IsDeleted, user_id, @CreatedDate, client_id, @subscriptionid);
)
RETURNING client_id
此查询是否有效或我需要更改什么?
【问题讨论】:
-
这不是处理交易的正常方式
-
你能告诉我哪种方式好
-
您可能想要结帐交易?这个问题可能会帮助stackoverflow.com/questions/5178697/…
-
紧急考虑升级到a current version of Postgres。 9.3 版已在 2018 年达到 EOL (!)
-
@ShaileshSuryawanshi:为什么要链接到 MySQL 问题?这是具有不同(高级)事务处理的 Postgres。而
LAST_INSERT_ID()(如那里所建议的那样)是特定于 MySQL 的。
标签: sql postgresql sql-insert common-table-expression postgresql-9.3