【发布时间】:2014-08-07 05:08:45
【问题描述】:
我使用的是 Postresql 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 中插入一条对应的记录,然后插入匹配的 FooBar 记录,其中包含 foo 和 bar 条目的 id。
Catch:我不知道何时插入 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 表中?
【问题讨论】:
标签: postgresql sql-insert