Что означают параметры подтверждения 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
.
Итак, вы видите, что вы сделали вставку, статус_код был равен нулю, а одна строка была затронута.
Иными словами, ваша команда завершается успешно!