云数据库OceanBase入门教程 OceanBase 重取行

2024-02-26 开发教程 云数据库OceanBase入门教程 匿名 6

对于某些类型的结果集,结果集支持 refreshRow 方法来重新获取数据,包括返回数据库以重新获取与结果集中的 n 行相对应的数据库行,从当前行开始,其中 n 是获取大小。

可以查看数据库在结果集之外的更新操作,但是取决于该事务的隔离级别。

因为仅重新获取与结果集中已存在的行相对应的行,所以对于自原始查询以来已在数据库中插入或删除的行不执行任何操作。重新获取会忽略已插入的行,即使从数据库中删除了相应的行,行仍将保留在结果集中。当尝试重新获取数据库中已删除的行时,结果集中的相应行将保持其原始值。

说明
如果您声明 ​TYPE_SCROLL_SENSITIVE​ 结果集是基于具有特定条件的查询,然后从外部更新该行以使列值不再与查询条件匹配,那么驱动程序的行为就好像该行已从数据库中删除而该查询未检索到该行。因此,调用​refreshRow ​方法时,看不到特定行的更新。

以下是 refreshRow 方法的签名:

void refreshRow() throws SQLException

调用此方法时,您必须位于当前行中,不能在行边界之外,也不能在插入行中。

支持 refreshRow 方法的结果集类别如下:

  • 回滚敏感/只读
  • 回滚敏感/可更新
  • 回滚不敏感/可更新

回滚敏感的结果集功能是通过隐式调用 ​refreshRow​ 来实现的。