我在Ubuntu 64位服务器上运行PostgreSQL版本9.3.4。
我在HP-UX上使用PoatgreSQL ODBC驱动程序(libpsqlodbcw)9.03版。
我能够连接,检索数据并进行一般的续集更新。但是,当我尝试使用SQLSetPOS
更新游标时,出现错误:
Only SQL_POSITION/REFRESH is supported for PGA PI_SetPos
我尝试使用语法select * from table for update of table
(以及此版本的许多版本)并没有任何效果。
此时我猜测不支持此类更新。有人对此有任何意见吗?
答案 0 :(得分:1)
是,光标可以更新。
digoal=# begin;
BEGIN
digoal=# declare cur cursor for select * from t;
DECLARE CURSOR
digoal=# fetch next from cur;
id | phone | cnt
----+-------+-----
1 | 1 | 3
(1 row)
digoal=# update t set cnt=1000 where current of cur returning *;
id | phone | cnt
----+-------+------
1 | 1 | 1000
(1 row)
UPDATE 1
digoal=# select * from t where id=1;
id | phone | cnt
----+-------+------
1 | 1 | 1000
(1 row)
digoal=# end;
COMMIT
digoal=# select * from t where id=1;
id | phone | cnt
----+-------+------
1 | 1 | 1000
(1 row)