3

我正在使用 PostgreSQL 11 最新版本,在继承表的 PK 身份方面存在问题。

假设您有简单的父表,例如:

CREATE TABLE test7 
    (
    id_t7 int GENERATED always AS IDENTITY PRIMARY KEY,
    folio int GENERATED always AS IDENTITY,
    client int
    );

使用任何继承的表,例如:

CREATE TABLE test7_detail1
(
  --  uuid uuid DEFAULT uuid_generate_v4(), <-- fiddle doesn't support it
    in_process boolean,
    id_corte integer,
    ts_captura timestamp(6) without time zone DEFAULT (now())::timestamp without time zone
) INHERITS (test7);

如果我尝试像这样插入:

insert into test7_detail1 (client,in_process, id_corte)
values (20797,'t',101)

它返回:

ERROR:  null value in column "id_t7" violates not-null constraint
DETAIL:  Failing row contains (null, null, 20797, t, 101, 2019-05-03 22:27:54.823894).

是小提琴

我究竟做错了什么?
这是一个错误吗?

4

2 回答 2

0

我尝试id_t7 serial PRIMARY KEY而不是id_t7 int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY并且似乎有效。

CREATE TABLE test7 (
  id_t7 serial PRIMARY KEY,
  folio serial,
  client int
);

CREATE TABLE test7_detail1 (
  --  uuid uuid DEFAULT uuid_generate_v4(),
  in_process boolean,
  id_corte integer,
  ts_captura timestamp(6) without time zone DEFAULT (now())::timestamp without time zone
) INHERITS (test7);

insert into test7_detail1 (client,in_process, id_corte)
values (20797,'t',101);
于 2019-05-04T04:51:32.913 回答
0

标识列未继承

来自文档

如果父表中的列是标识列,则不会继承该属性。如果需要,可以将子表中的列声明为标识列。

于 2021-05-27T13:47:06.843 回答