postgresql 中的"链接表"是否应该在将记录添加到主表时自动更新?



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

下面是我的DDL——如果glo.link_table是这样生成的,并且我向glo.collectorsglo.natural_hazards都添加了数据,那么glo.link_table不应该自动更新吗?现在,当我将数据复制到glo.collectorsglo.natural_hazards时,glo.link_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不会自动填充。这些列将以类似于"外键"的方式工作,并确保对可以插入这些列的内容有某种形式的约束。

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

列参考文件

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

触发文件

相关内容

  • 没有找到相关文章

最新更新