Как определить pkey вставленной строки после использования pg_insert ()?

Мне нужно иметь возможность идентифицировать строку, которую я только что вставил после использования pg_insert, но документ просто говорит, что он возвращает true / false. Как я могу определить pkey записи из pg_insert ()? Я знаю, что мог бы использовать вручную созданный запрос с «RETURNING pkey» в конце, но я не хочу использовать pg_query (), потому что pg_insert автоматически экранирует все для вас, поэтому я хочу использовать его вместо этого.

2

Решение

Ты можешь использовать pg_query_params с RETURNING пункт и использовать параметры, чтобы избежать всего.

Единственная проблема с этой функцией заключается в том, что при возникновении ошибки вы не можете узнать ее истинную причину. Получение правильного сообщения об ошибке означает использование pg_send_query_params с pg_get_result.

См пример кода.

1

Другие решения

Поскольку в pgsql нет концепции id (только последовательности), вы можете использовать следующий код.

SELECT currval(pg_get_serial_sequence(tablename, 'id'));
0

По вопросам рекламы [email protected]