gpt4 book ai didi

sql-server - PostgreSQL 中的 nextval 和 curve 混淆

转载 作者:行者123 更新时间:2023-11-29 12:34:17 25 4
gpt4 key购买 nike

如果多个用户同时运行以下查询会发生什么?

INSERT INTO "Retail"."Attributes"("AttributeId","AttributeCode","AttributeName")
VALUES(nextval('"Retail"."CompoundUnits_CompoundUnitId_seq"'::regclass),'COL','Color');

INSERT INTO "Retail"."AttributeDetails"
("AttributeId","AttributeDetailCode","AttributeDetailName")
VALUES
(
currval('"Retail"."CompoundUnits_CompoundUnitId_seq"'::regclass), 'COL-Red', 'Color Red'
),
(
currval('"Retail"."CompoundUnits_CompoundUnitId_seq"'::regclass), 'COL-Blu', 'Color Blue'
),
(
currval('"Retail"."CompoundUnits_CompoundUnitId_seq"'::regclass), 'COL-Gre', 'Color Green'
);

这个方法和 SQL SERVER 的 SCOPE_IDENTITY() 一样可靠吗?任何建议将受到高度赞赏。

最佳答案

currval() 是特定于 session 的。如果单独的 session 增加您的序列,currval() 将继续返回您的预期值。

也就是说,您可能想要使用插入返回:

insert into foo values (...) returning id;

insert into bar (foo_id, ...) values (:id, ...), (:id, ...), ...;

关于sql-server - PostgreSQL 中的 nextval 和 curve 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5947574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com