[pgsql-jp: 26558] delete,updateの戻値について
kaneshige
kaneshige @ unified.co.jp
2002年 7月 2日 (火) 17:10:23 JST
はじめまして。
誠に、初歩的な質問で申し訳がありません。
(初心者なので勘弁してください)
現在、red hat7.1にpostgresql7.2.1をインストールして、C言語を用いて、
select, insert, update, deleteのテストプログラムを組んでいます。
それらの戻り値についての質問です。
update, delete に関しては、該当するデータがなくても PQresultStatus(res)は
PGRES_COMMAND_OK
を返してくるのですが、これは正常なのでしょうか?
insertに関しては、プライマリーキーが重複していると、PQresultStatus(res)は
PGRES_COMMAND_OK以外を返してきます。
どうかご教授ください。
私の、ソースの一部を下記します。
(insert)
/* SQL文作成 */
sprintf(query_string,"INSERT INTO perf_test VALUES("
" %d, %d, %d, %d, %d, %d, %d, %d, %d, %d,"
" '%c', '%c', '%c', '%c', '%c',"
" '%c', '%c', '%c', '%c', '%c')",
randnum[0], randnum[1], randnum[2], randnum[3],
randnum[4], randnum[5], randnum[6], randnum[7],
randnum[8], randnum[9],
randchar[0], randchar[1], randchar[2], randchar[3],
randchar[4], randchar[5], randchar[6], randchar[7],
randchar[8], randchar[9]
);
/* トランザクション処理開始 */
PQexec(conn, "BEGIN WORK");
/* SQL文発行 */
res = PQexec(conn, query_string);
if (PQresultStatus(res) != PGRES_COMMAND_OK){
fprintf(fno,"INSERT query failed.\n");
PQexec(conn, "ROLLBACK WORK");
}else
{
fprintf(fno, "%d\n", randnum[0]);
PQexec(conn, "COMMIT WORK");
}
/* 結果をクリア */
PQclear(res);
(delete)
/* SQL文作成 */
sprintf(query_string,"DELETE FROM perf_test WHERE num1 = %d",
randnum);
/* トランザクション処理開始 */
PQexec(conn, "BEGIN WORK");
/* SQL文発行 */
res = PQexec(conn, query_string);
if (PQresultStatus(res) != PGRES_COMMAND_OK){
fprintf(fno,"DELETE query failed.\n");
PQexec(conn, "ROLLBACK WORK");
}else
{
fprintf(fno, "%d\n", randnum);
PQexec(conn, "COMMIT WORK");
}
/* 結果をクリア */
PQclear(res);
(update)
/* SQL文作成 */
sprintf(query_string,"UPDATE perf_test SET num2 = %d"
" WHERE num1 = %d",
randnum[0], randnum[1]);
/* トランザクション処理開始 */
PQexec(conn, "BEGIN WORK");
/* SQL文発行 */
res = PQexec(conn, query_string);
if (PQresultStatus(res) != PGRES_COMMAND_OK){
fprintf(fno,"UPDATE query failed.\n");
PQexec(conn, "ROLLBACK WORK");
}else
{
fprintf(fno, "%d\n", randnum[0]);
PQexec(conn, "COMMIT WORK");
}
/* 結果をクリア */
PQclear(res);
pgsql-jp メーリングリストの案内