Я использую PostgreSQL 9.0, и у меня есть таблица с только искусственным ключом (последовательность автоинкремента) и другим уникальным ключом.(Да, для этой таблицы есть причина. :)) Я хочу найти идентификатор по другому ключу или, если он не существует, вставить его:
SELECT id
FROM mytable
WHERE other_key = 'SOMETHING'
Затем, если нетmatch:
INSERT INTO mytable (other_key)
VALUES ('SOMETHING')
RETURNING id
Вопрос: возможно ли сохранить двустороннюю поездку в БД, выполнив оба этих действия в одном выражении?Я могу вставить строку, если она не существует, как это:
INSERT INTO mytable (other_key)
SELECT 'SOMETHING'
WHERE NOT EXISTS (SELECT * FROM mytable WHERE other_key = 'SOMETHING')
RETURNING id
... но это не дает идентификатор существующей строки.Есть идеи?Существует другое ограничение для other_key, если это помогает.