当我尝试通过网格更新记录时偶尔会出现此错误。
One error saving changes to table "SCHEMA"."TABLENAME":
Row 3: Data got committed in another/same session, cannot update row.
抬头看OTN但还没有解决方案。
尝试禁用选项对行更改发布后修改,但仍然没有运气。
有一种已知的解决方案可以通过SQL工作表将字段设置为 NULL ,但这肯定是一种痛苦。
答案 0 :(得分:31)
可能是您的表是使用NOROWDEPENDENCIES创建的,因此关闭了行级依赖关系跟踪,并且SQL Developer配置为“使用ORA_ROWSCN进行DataEditor插入和更新语句”。
取消选中ORA_ROWSCN选项,或使用ROWDEPENDENCIES重新创建表。
答案 1 :(得分:5)
只需运行简单的更新命令并将cplumn设置为null。然后尝试用您的真实价值进行更新。它肯定会奏效。
答案 2 :(得分:0)
“保存更改表”SCHEMA“的一个错误。”TABLENAME“: 第XX行:数据已在另一个/同一会话中提交,无法更新行。“
在提交多行更改时,SQL开发人员遇到此错误, 但不是在提交一行时。
我决定前往:
工具菜单 - >偏好 - >数据库 - > ObjectViewer
并检查:“对行更改进行后期修改”
但是,每次导航到另一行需要一些时间(我正在使用的DB不到一秒钟)。 对于我从其他帖子中可以理解的内容,每次更改行时,我的会话中的远程数据库都会被更新(但不会被所有会话调用)。 但是,要提交所有会话,需要显式提交。
与此同时,我试图像其他人所说的那样:
工具菜单 - >偏好 - >数据库 - > ObjectViewer
取消选中“使用ORA_ROWSCN进行DataEditor插入和更新语句”选项 (并且还取消选中:“对行更改进行后期编辑”)
这也有效,但速度更快。 它猜测现在更新只是本地的。每次导航到另一行时,远程DB都不会更新。 需要提交更新远程数据库,但现在没有错误。
我读到这个解决方案并不适用于所有人。 它适用于我的情况:
SQL开发人员版本:17.4.1.054,Build 054.0712
ODAC 12.2c第1版和适用于Visual Studio的Oracle开发人员工具(12.2.0.1.0)(32位) (http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html)
远程数据库服务器版本:Oracle Database 11g 11.2.0.1.0版 - 64位生产
答案 3 :(得分:-1)
我在运行存储过程时遇到了这个问题。我的解决方案与上述答案一致。在将我想要的行更新为我想要的值之前,我添加了一个更新行,该行首先将列更新为null。然后,以下行将列更新为我想要的值。除了取消选中ORA_ROWSCN的方框外,我还做了这个。
UPDATE TEST_LOCATION SET STATUS = NULL FULL_NAME = SITE_FULL_NAME;
UPDATE TEST_LOCATION SET STATUS = CAST(STATUS_IN AS INTEGER)FULL_NAME = SITE_FULL_NAME;