lastInsertId не работает в Postgresql

Я использую Postgresql, когда я хочу использовать PDO для получения последнего идентификатора вставки, у меня возникла проблема. Вот мой код:

$db->lastInsertId('columnName'); 

В сообщении об ошибке

 SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "columnName" does not exist 

Наверное, у меня есть недоразумение о «объекте последовательности», указанном в Руководстве по PHP.

 Note: Returns the ID of the last inserted row, or the last value from a sequence object, depending on the underlying driver. For example, PDO_PGSQL() requires you to specify the name of a sequence object for the name parameter. 

В настоящее время «columnName» является строкой этого атрибута с автоинкрементами. Может ли кто-нибудь указать, где я ошибся? Благодарю.

PostgreSQL использует последовательности для генерации значений для serial столбцов, а serial столбцы, как правило, используются для столбцов «auto-incrementing» в PostgreSQL. Последовательности имеют имена и, в общем, не зависят от какой-либо конкретной таблицы, поэтому у вас может быть одна последовательность, генерирующая уникальные идентификаторы для нескольких разных таблиц; имя последовательности – это то, что lastInsertId хочет в качестве аргумента:

Например, PDO_PGSQL () требует указать имя объекта последовательности для параметра name .

Объект последовательности, созданный PostgreSQL, автоматически называется [table]_[column]_seq , So:

 $id = $db->lastInsertId('tableName_columnName_seq'); 

Сегодня я столкнулся с этой проблемой, lastInsertId () возвращал false. Нашел ответ, который решил мою проблему в другом потоке: https://stackoverflow.com/a/31638196/1477123

 CREATE TABLE ingredients ( id SERIAL PRIMARY KEY, name varchar(255) NOT NULL, ); 

Таким образом, имя последовательности будет component_id_seq

 $db->lastInsertId('ingredients_id_seq'); 

Таким образом , имя последовательности будет ingredients_id_seq ,

 $db->lastInsertId('ingredients_id_seq'); 

Этот формат фактически решил мои проблемы !!!

Использовать имя последовательности вместо имени столбца

 $db->lastInsertId('columnName');