PostgreSQL INSERT确认参数是什么意思?

kat*_*tir 25 postgresql insert

在我的LiveCode Server应用程序中,我在插入时返回了一个dberr,但没有明确的错误代码.

我去了一个终端,用手Postgres手工插入.

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

psql进程返回:

INSERT 0 1
Run Code Online (Sandbox Code Playgroud)

这条线是什么意思?除了主表之外,我还有一个序列来递增主表的主键ID(int).

如果我检查数据,插入数据,主键增加1,一切似乎都很好,我不知道为什么我的应用程序返回错误(可能是应用程序或我的代码中的错误).

但如果我知道这INSERT 0 1意味着什么,那将有助于我向自己保证:

  1. 是的,插入没有错误,或
  2. 不,0 1表示某种错误.

如果有人有PostgreSQL文档的链接,告诉我们这些服务器响应参数是什么,我会研究它...我到处寻找.

Mil*_*dev 36

摘自手册中的相关页面:

输出

成功完成后,INSERT命令将返回表单的命令标记

INSERT oid计数

计数是插入的行数.如果count正好为1,并且目标表具有OID,则oid是分配给插入行的OID.否则oid为零.

  • 作为这个答案的补充,假设你的表中有一个名为"id"的字段,它是通过序列自动分配的,如果你以"INSERT INTO new-table(first_name,last_name,anonymous)VALUES"的形式运行你的插入( 'batman','Moonboy',TRUE)RETURNING id",消息"INSERT 0 1"将被刚刚插入的记录中的id的新值替换. (6认同)

Sam*_*ens 6

令人讨厌的是,我找不到任何关于此的实际文档.

但是看着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.

所以你看到的是你已经完成了一个插入,status_code为零,一行受到了影响.

换句话说,您的命令已成功完成!