Можно ли получить идентификатор для вставки в базу данных перед вставкой - PullRequest
3 голосов
/ 23 июля 2011

Я использую PDO с PostgreSQL в PHP.

Я позволю своим пользователям загружать файлы.

Я хотел бы добавить идентификатор записи к сохраненному изображению.

Можно ли получить (или зарезервировать) идентификатор записи перед вставкой в ​​базу данных.

Я не думаю, что это возможно, просто хочу быть уверенным.

Ответы [ 2 ]

8 голосов
/ 23 июля 2011

Да, вы должны использовать функцию postgres nextval, чтобы получить следующее значение в последовательности.Посмотрите значение по умолчанию в столбце id вашей таблицы, оно должно содержать следующий вызов для используемой последовательности.

Например, если таблица выглядит примерно так:

image_id bigint not null default nextval('image_image_id_seq'::regclass)
data bytea not null

Вы можете вызвать:

SELECT NEXTVAL('image_image_id_seq') ;

, который "зарезервирует" идентификатор для вас, чтобы использовать его позже:

INSERT INTO image (image_id, data) VALUES (?, ?) ;
1 голос
/ 23 июля 2011

Вы также можете сделать это:

BEGIN
INSERT RETURNING
get id
rename file
COMMIT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...