1

同一行:

DELETE(SELECT * FROM tablename WHERE id=12)

在 SQL Developer 上运行正常,使用 occi API 时需要永远。

我检查了查询“SELECT * FROM tablename WHERE id=12”是否匹配非空的行集。

更具体地说,我使用以下语法:

oracle::occi::Statement *deleteStm = con->createStatement("DELETE(SELECT * FROM tablename WHERE id=12)");
oracle::occi::ResultSet *rs = deleteStm->executeQuery();
4

1 回答 1

1

我怀疑在你的情况下你只是有未提交的交易。它是这样的:

session1                   session2
DELETE ...                                        table/rows is locked

                           SELECT * FROM ...      you will see all data

                           DELETE ...             and now you will wait and wait
                                                  until lock is released

COMMIT;
                           SELECT * FROM ...      now resultset is empty

我强烈建议阅读Data Concurrency and Consistency

于 2017-09-14T15:16:18.460 回答