我是SQL / PostgreSQL的新手。如果满足某些条件,我想立即插入多个相关表,否则返回表的现有id。让我举一个例子,以下是我的示范表。
CREATE TABLE profile (
id serial NOT NULL,
first_name VARCHAR NOT NULL,
last_name VARCHAR NOT NULL,
PRIMARY KEY (id)
)
CREATE TABLE movies (
movied_id serial NOT NULL,
movie_name VARCHAR NOT NULL,
profile_id INTEGER NOT NULL,
PRIMARY KEY (movie_id),
FOREIGN KEY (profile_id) REFERENCES profile.id
)
CREATE TABLE sports (
sport_id serial NOT NULL,
sport_name VARCHAR NOT NULL,
profile_id INTEGER NOT NULL,
PRIMARY KEY (sport_id),
FOREIGN KEY (profile_id) REFERENCES profile.id
)
CREATE TABLE visited_countries (
country_name VARCHAR NOT NULL,
profile_id INTEGER NOT NULL,
PRIMARY KEY (country_name),
FOREIGN KEY (profile_id) REFERENCES profile.id
)
此处,配置文件表包含id,first_name,last_name,它与电影,体育,visited_countries表相关。配置文件表和所有其他表之间存在一对多关系(外键也显示在表中)。鉴于这种情况:
我想先通过获取唯一的配置文件ID,然后将其作为FK用于所有其他表,一次性插入所有这些表中。
我想在插入所有内容之前检查以下内容。 - first_name,last_nane以及profile id看到的所有电影,体育,visited_countries应该是不同的,只有我将使用生成的配置文件ID在订单中一次插入所有这些表,否则只返回配置文件ID。
我有多个客户同时写入表格,所以我想一次锁定并执行此交易。
我使用CTE阅读了几件事,但无法使其正常工作。任何建议和系统的方法来做这件事都会有所帮助。