我正在使用PostgreSQL 9.3.5。我在“Foo”和“Bar”两个实体之间建立了多对多的关系,并将其建模为以下结构:
CREATE TABLE Foo
(
id SERIAL PRIMARY KEY NOT NULL,
.... various columns for foo ....
);
CREATE TABLE Bar
(
id SERIAL PRIMARY KEY NOT NULL,
field1 varchar(50) UNIQUE NOT NULL,
.... various columns for bar ....
);
CREATE TABLE FooBar
(
fooID int NOT NULL,
barID int NOT NULL,
PRIMARY KEY (fooID, barID),
FOREIGN KEY (fooID) REFERENCES Foo(id),
FOREIGN KEY (barID) REFERENCES Bar(id)
);
现在我想要做的是向Foo插入一条记录,向Bar插入相应的记录,然后插入包含foo和bar条目id的匹配FooBar记录。
注意:我不知道何时插入Bar记录是否已经存在,因此当前我的Bar插入看起来像这样:
INSERT INTO Bar(field1, .... other fields for Bar....)
SELECT 'value1', .... other values for the insert....
WHERE NOT EXISTS (
SELECT 1 FROM Bar WHERE field1 = 'value1')
这样做是有效的,但我的问题是:我如何获取新插入(或已存在)的Bar记录的id,以便我可以将其插入到FooBar表中?