Получение идентификатора внутри блока транзакции PostgreSQL

Я пытаюсь обернуть все свои транзакции, которые должны быть "все или ничего", в BEGIN и COMMIT , но я не знаю, как это сделать в следующих случаях.

У меня есть 3 таблицы, одна для изображений, одна для альбомов и одна для отношений между ними, а именно album_images . Система работает так, что пользователь может создать альбом и заполнить его своими изображениями за одну операцию. SQL выглядит следующим образом:

BEGIN;
  INSERT INTO albums [...];  -- Create a new album row
  SELECT id AS album_id FROM albums WHERE [...];  -- Get that rows ID
  -- Now use album_id in the next statement
  INSERT INTO album_images (album_id, image_id) [...];
COMMIT;

Это, вероятно, обычная проблема, я просто не знаю, что искать, и я не могу найти решение в документации.

7
задан Steffen 25 July 2011 в 21:15
поделиться