将记录添加到主表时,postgresql 中的 'link tables' 是否应该自动更新?

Are 'link tables' in postgresql supposed to automatically update when records are added to primary tables?

Noob 问题 - 基本上我正在尝试获取一个 link table 用于自动更新的多对多关系。我真的不知道这是否应该发生,但我认为我也不应该手动将数据复制到其中。

下面是我的 DDL - 如果 glo.link_table 是这样制作的,并且我将数据添加到 glo.collectorsglo.natural_hazards,不应该 glo.link_table 自动更新?现在,当我将数据复制到 glo.collectorsglo.natural_hazards 时,glo.link_table 没有做任何事情。我想当我向这两个 table 添加数据时,我希望 glo.link_table 喜欢添加记录。

    --Drop if exsits & create
DROP TABLE IF EXISTS  glo.collectors CASCADE;
 
-- Make collectors table
CREATE TABLE glo.collectors (
  u_id serial,
  user_name text NOT NULL,
  password text NOT NULL,
  email text NOT NULL,
  agency text NOT NULL,
  PRIMARY KEY (u_id)
);
 
--Drop if exsits & create
DROP TABLE IF EXISTS glo.natural_hazards;
 
-- Create natural hazards table
CREATE TABLE IF NOT EXISTS glo.natural_hazards(
      nathaz_id SERIAL,
      data_version text, 
      data_class text, -- class = foundational  
      agency text NOT NULL,
      data_owner text,
      data_url text NOT NULL,
      keywords text,
      spatial_ref text,
      creation_date text,
      data_description text,
      data_purpose text, 
      fema_sfha text,
      event_inundation text,
      video_catalog text,
      hazard_scale text,
      PRIMARY KEY (nathaz_id)
);
 
--Drop if exsits & create
DROP TABLE IF EXISTS glo.link_table;
 
-- Create link table
CREATE TABLE IF NOT EXISTS glo.link_table(
      u_id int REFERENCES glo.collectors (u_id) ON UPDATE CASCADE ON DELETE CASCADE,
      nathaz_id int REFERENCES glo.natural_hazards (nathaz_id) ON UPDATE CASCADE,
      CONSTRAINT link_table_pkey PRIMARY KEY (u_id, nathaz_id) 
      );

否 link_table 不会自动填充。这些列将以类似于 'foreign key' 的方式运行,并确保对可以插入这些列的内容有某种形式的约束。

link_table 中已存在的数据将受到这些列引用的表中数据更改的影响。但是这个数据必须单独插入。

column references documentation

为了自动将数据插入 link_table,我建议可能使用触发器。

Trigger documentation