【问题标题】:ORA-32796: cannot update a generated always identity columnORA-32796: 无法更新生成的始终标识列
【发布时间】:2021-11-08 16:14:41
【问题描述】:

我正在将一些代码从 vb.net 2008 转换为 vb.net 2019。我在代码中收到一些警告,指出我使用的 Oracle 参考在未来版本中会过时,因此我切换到 Oracle.ManagedDataAccess 参考。

似乎我可以读取数据,但不幸的是,当我尝试写入数据时,我遇到了以前没有遇到的问题。当我尝试更新我的 Oracle 数据库中的现有记录时,我收到此错误:

ORA-32796: 无法更新生成的始终标识列

如果我将查询更改为仅包含我想要更新的字段,则会收到此错误:

动态 SQL 生成失败。没有找到关键信息

第二个错误是有道理的,但不是第一个。新代码似乎不喜欢我的 ID 列。我不是数据库专家或任何东西,但我不知道如何解决这个问题。

【问题讨论】:

    标签: database oracle vb.net


    【解决方案1】:

    看起来像表的 ID 列被创建为

    id NUMBER GENERATED     ALWAYS AS IDENTITY
                            ------
    

    如果是的话

    id NUMBER GENERATED BY DEFAULT AS IDENTITY
                        ----------
    

    那么我想你不会得到那个错误。


    无论如何:如果您发布 CREATE TABLE 以及针对该表执行的 DML,将会有所帮助。

    【讨论】:

    • 为什么我在其他版本的代码中没有收到该错误?
    • 我真的不知道。
    • 这里是表格布局的链接:i.imgur.com/KpwyqjL.png ID 字段只是一个使用触发器创建的数字。我没有看到您提到的 Always as Identity。
    • 不要发布链接到表格结构或代码。将两者都发布为文本。如果不看表结构或代码,我们无法回答有关表结构或代码的问题。
    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2016-09-25
    • 1970-01-01
    相关资源
    最近更新 更多