0
我想從一個應用程序鎖定表,並插入一些數據。我的要求是,如果該表已被任何其它的過程,然後我需要嘗試一個特定的時間量之後鎖定鎖定。異步執行失敗
我使用unixODBC驅動程序在CentOS的機器和我的數據庫PostgreSQL的是。我做了一個關於如何使用odbc api異步執行sql的研究。我發現SQLSetStmtAttr api可以用來異步執行sql語句。但它不工作。
這是我寫的代碼:
ret = SQLSetStmtAttr(stmt1, SQL_ATTR_ASYNC_ENABLE,(SQLPOINTER) SQL_ASYNC_ENABLE_ON, 0);
// above statement returned success
if((ret = SQLExecDirect(stmt1,"lock table test",SQL_NTS)) == SQL_STILL_EXECUTING)
{
printf("\nCanceling\n");
ret = SQLCancel(stmt);
}
//但過程越來越掛在SQLExecDirect的API,爲表「測試」已被其他進程鎖定。 (杭在這個意義上,等待所有其他進程釋放鎖)
爲什麼會這樣呢?是因爲我的unixODBC驅動程序不支持異步執行。如果它那麼爲什麼SQLSetStmtAttr返回成功?
任何幫助是極大的讚賞。提前致謝。