我有表A.表A拥有一个序列。 我创建了表B,继承自表A. 表A和B现在对其主键列使用相同的默认值。 举一个简单的例子,表A是" person",B是" bulk_upload_person"。
CREATE TABLE "testing"."person" (
"person_id" serial, --Resulting DDL: int4 NOT NULL DEFAULT nextval('person_person_id_seq'::regclass)
"public" bool NOT NULL DEFAULT false
);
--SQL Ran
CREATE TABLE "testing"."bulk_upload_person" (
"upload_id" int4 NOT NULL
)
INHERITS ("testing"."person");
--Resulting DDL
CREATE TABLE "testing"."bulk_upload_person" (
"person_id" int4 NOT NULL DEFAULT nextval('person_person_id_seq'::regclass),
"public" bool NOT NULL DEFAULT false,
"upload_id" int4 NOT NULL
)
INHERITS ("testing"."person");
对于表A,我可以使用pg_get_table_serial_seqence
来获取序列。
如果我只了解表B,如何获取然后设置序列的下一个值?我想在值中添加n。
我需要这样做才能一次填充多个相关对象,同时能够知道他们将拥有哪些主要ID,而不必查询我刚刚填充的表来确定ID。 / p>
通过填充,我的意思是在一个语句中插入多行。
insert into "testing"."bulk_upload_person" ( "person_id", "public", "upload_id") values ( '1', 'f', '1'), ( '2', 't', '1'); --etc
我认为我们的情况类似于https://stackoverflow.com/a/8007835/89211,但我们并不想保持锁定,除了获取并设置每个表的序列的下一个值。
目前我们这样做是通过重新表示表B的主键的默认值来获取序列的名称,但感觉可能有更好的方法来实现这一点,我们不会这样做。意识到。