В конце концов, я воспользовался специфичным для PostgreSQL расширением SQL, предложением RETURNING
оператора INSERT
, которое возвращает сгенерированные первичные ключи после выполнения оператора INSERT
. Также необходимо было обмануть DBI
, чтобы обработать запрос INSERT
, как если бы это был запрос SELECT
, чтобы получить доступ к возвращаемым значениям, то есть сгенерированным ключам.
Предположим, у нас есть следующая таблица в базе данных: USERS(id, name)
, где id
— это автоматически сгенерированный первичный ключ. Следующий пример фрагмента кода R иллюстрирует концепцию получения сгенерированного ключа из базы данных и присвоения его объекту R:
query <- sprintf(
"INSERT INTO users (name) VALUES ('%s') RETURNING id",
users$name
)
dbres = dbGetQuery(conn, query)
users$id = dbres$id
person
Endre
schedule
27.06.2019
select
послеinsert
? - person Dirk Eddelbuettel   schedule 24.06.2019INSERT
? Обычно они не отображаются буквально на прикладном уровне, а только для объединения таблиц в операторах SQL. - person Parfait   schedule 24.06.2019