postgresql 复制期间忽略继承

mznpcxlj  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(134)

假设我们有一个父表和一个子表,如下所示:

CREATE TABLE cities (
    name            text,
    population      float,
    elevation       int     -- in feet
);

CREATE TABLE capitals (
    state           char(2)
) INHERITS (cities);

字符串
现在,当我在子表capitals上插入任何行时,它也会在父表cities上插入相同的行。
我正在使用一个迁移工具,它使用COPY命令将数据从源填充到目标。
行在父表中重复,因为有2个插入。

  • COPY命令本身
  • COPY命令的子命令

当它使用COPY将行插入子表时,这些表也会插入父表。
我想使用COPY命令将一些数据插入到子表中,而不将它们插入到父表中。
有没有什么方法可以做到这一点

dtcbnfnu

dtcbnfnu1#

行不重复。如果插入到capitals中,则没有任何内容插入到cities中。但是当从cities中插入SELECT时,PostgreSQL也会显示来自capitals的结果。实际上,

SELECT * FROM cities;

字符串
实际执行

SELECT name, population, elevation
FROM ONLY cities
UNION ALL
SELECT name, population, elevation
FROM ONLY capitals;


您可以使用ONLY来避免这种情况:

SELECT * FROM ONLY cities;


但是如果您不想要表继承的默认行为,那么最好根本不要使用该特性。

相关问题