Noob问题-基本上我正在尝试为多对多关系获取一个链接表以自动更新。我真的不知道这是否应该发生,但我也不认为我应该手动将数据复制到其中。
下面是我的DDL——如果glo.link_table
是这样生成的,并且我向glo.collectors
和glo.natural_hazards
都添加了数据,那么glo.link_table
不应该自动更新吗?现在,当我将数据复制到glo.collectors
和glo.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,我建议可能使用触发器。
触发文件