24

当我尝试通过网格更新记录时,我偶尔会收到此错误。

One error saving changes to table "SCHEMA"."TABLENAME":
Row 3: Data got committed in another/same session, cannot update row.

查看了OTN,但尚未给出解决方案。

试图禁用选项在行更改时发布编辑但仍然没有运气。

有一个通过 SQL 工作表将字段设置为NULL的已知解决方案,但这肯定很痛苦。

4

4 回答 4

34

可能是您的表是使用 NOROWDEPENDENCIES 创建的,因此关闭了行级依赖项跟踪,并且 SQL Developer 被配置为“将 ORA_ROWSCN 用于 DataEditor 插入和更新语句”。

要么取消选中 ORA_ROWSCN 选项,要么使用 ROWDEPENDENCIES 重新创建表。

于 2012-05-22T07:55:28.283 回答
5

只需简单地运行简单的更新命令并将您的 cplmn 设置为 null。然后尝试更新你的真实价值。它肯定会奏效。

于 2012-12-12T10:01:49.253 回答
0

“保存对表“SCHEMA”的更改时出错。“TABLENAME”:第 XX 行:数据在另一个/同一会话中提交,无法更新行。”

在多行中提交更改时,SQL 开发人员收到此错误,但在提交单行时没有。

我固定去:

工具菜单 -> 首选项 -> 数据库 -> ObjectViewer

并检查:“在行更改时发布编辑”

但是,每次我导航到另一行都需要一些时间(我正在处理的数据库不到一秒)。对于我从其他帖子中可以理解的内容,每次我更改行时,我的会话中的远程数据库都会被更新(但不是所有会话)。但是,要提交到所有会话,需要显式提交。

同时,正如其他人建议的那样,我尝试:

工具菜单 -> 首选项 -> 数据库 -> ObjectViewer

取消选中“将 ORA_ROWSCN 用于 DataEditor 插入和更新语句”选项(也不要选中:“在行更改时发布编辑”)

这也有效,但速度更快。它猜测现在更新只是本地的。每次我导航到另一行时,远程数据库都不会更新。需要提交更新远程数据库,但现在没有错误。

我读到这个解决方案并不适用于所有人。在我的情况下,它适用于:

SQL 开发者版本:17.4.1.054,内部版本 054.0712

ODAC 12.2c 第 1 版和适用于 Visual Studio (12.2.0.1.0)(32 位)的 Oracle 开发人员工具 ( http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html )

远程数据库服务器版本:Oracle Database 11g Release 11.2.0.1.0 - 64bit Production

于 2018-03-29T00:52:45.093 回答
-1

我在运行存储过程时也遇到了这个问题。我的解决方案符合上述答案。在将我想要的行更新为我想要的值之前,我添加了一个更新行,它首先将列更新为空。然后,以下行将该列更新为我想要的值。除了取消选中 ORA_ROWSCN 框外,我还这样做了。

UPDATE TEST_LOCATION SET STATUS = NULL WHERE FULL_NAME = SITE_FULL_NAME;

UPDATE TEST_LOCATION SET STATUS = CAST(STATUS_IN AS INTEGER) WHERE FULL_NAME = SITE_FULL_NAME;

于 2014-10-02T02:44:05.563 回答