Что означают параметры подтверждения PostgreSQL INSERT?

В моем приложении LiveCode Server я получаю dberr, возвращенный при вставке, но не имеющий явного кода ошибки.

Я пошел на терминал и сделал ввод вручную как пользователь Postgres.

%My_Dbase=# INSERT INTO new-table (first_name, last_name, anonymous) VALUES ('batman', 'Moonboy', TRUE);

Процесс psql возвращает:

INSERT 0 1

Что означает эта линия? Помимо первичной таблицы, у меня также есть последовательность для увеличения идентификатора первичного ключа (int) основной таблицы.

Если я проверяю данные, данные вставляются, первичный ключ увеличивается на единицу, и все кажется прекрасным, я не уверен, почему мое приложение возвращает ошибку (может быть ошибка в приложении или моем коде),

Но если бы я знал, что означал INSERT 0 1, это помогло бы мне заверить себя, что:

  • Да, вставка выполнена без ошибок или
  • Нет, 0 1 указывает на ошибку некоторого типа.

Если у кого есть ссылка на документ PostgreSQL, который сообщает, что это за параметры ответа сервера, я изучу его... Я повсюду смотрел.

Ответы

Ответ 1

Выдержка из соответствующей страницы в руководстве:

Выходы

При успешном завершении команда INSERT возвращает тег команды формы

Количество вкладок INSERT

Число - это количество вставленных строк. Если счетчик равен точно одному, а целевая таблица имеет OID, тогда OID - это идентификатор OID, назначенный вставленной строке. В противном случае oid равно нулю.

Ответ 2

Досадно, я не могу найти никакой реальной документации об этом.

Однако, глядя на http://www.postgresql.org/docs/current/interactive/rules-status.html и PQcmdStatus в http://www.postgresql.org/docs/current/interactive/libpq-exec.html, похоже, что вы видите статус команды.

Формат, который я выводил из документации, - COMMAND STATUS_CODE ROWS_AFFECTED.

Итак, вы видите, что вы сделали вставку, статус_код был равен нулю, а одна строка была затронута.

Иными словами, ваша команда завершается успешно!