我有一个c脚本,它将传入的飞机数据写入postgres数据库。 我想在INSERT之后返回新的记录ID但是遇到了麻烦。
简化代码如下:
int new_id;
conn = PQconnectdb("dbname = flight_dev");
PQinitTypes(conn);
PGresult *res = PQexecf(conn,"INSERT INTO aircrafts (hex) VALUES (%text)", aircraft_hex);
PQgetf(res, 0, "%int4", 0, &new_id);
INSERT成功但是没有分配new_id并给出错误“行号1超出范围0 ..- 1”
任何帮助都会非常感谢。
答案 0 :(得分:3)
使用INSERT INTO aircrafts (hex) VALUES (%text) RETURNING id
返回新插入行的id列
答案 1 :(得分:2)
以前使用RETURNING id
时我错过了分号PGresult *res = PQexecf(conn,"INSERT INTO aircrafts (hex) VALUES (%text) RETURNING ID;", aircraft_hex);