--查我们插入一条数据到数据库时,pg会返回给我们如下信息,
postgres=# insert into test_2(id) select n from generate_series(1,10000) n;
INSERT 0 10000
--第一列说明是插入动作,第三列表示插入了多少行,那么第二列是什么呐
--查看源码,可知
ProcessQuery(PlannedStmt *plan,
const char *sourceText,
ParamListInfo params,
DestReceiver *dest,
char *completionTag)
{
if (completionTag)
{
Oid lastOid;
switch (queryDesc->operation)
{
case CMD_SELECT:
snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
"SELECT %u", queryDesc->estate->es_processed);
break;
case CMD_INSERT: --如果执行的命令是 insert
if (queryDesc->estate->es_processed == 1) --如果插入了一行
lastOid = queryDesc->estate->es_lastoid; --插入表的 OID
else
lastOid = InvalidOid; --插入的行数超过一行,则返回系统默认OID=0
snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
"INSERT %u %u", lastOid, queryDesc->estate->es_processed); --实际打印
insert 返回字段说明
最新推荐文章于 2024-08-20 17:01:38 发布
当在 PostgreSQL 中执行 INSERT 操作时,返回信息的第二列表示的是 OID,它只在表具有 OID 属性并且插入了单行数据时才有实际值。如果插入多行或者表不包含 OID,该字段将填充为 0。通过源码解析可以理解这一行为。
摘要由CSDN通过智能技术生成