0

我正在使用 Oracle 的自治数据库服务,ORDS 提供 REST 功能。

在对表进行更新时(此处的文档),当我有一个身份列时idGENERATED ALWAYS即使未id在请求正文中提供值,似乎 POST 请求也会被 REST 服务解析为id: null.

然后这给了我Error Message: ORA-32795: cannot insert into a generated always identity column ORA-06512: at line 4

使用 SQL 语句插入表而不指定id列按预期工作。

有没有办法让标识列始终生成(因此不能指定新行的 ID),同时允许 POST 更新?

4

1 回答 1

3

Auto Rest 功能将始终生成所有列,因此没有其他解决方案,而不是

  • 开发自己的POST方法并在其上省略IDENTITY
  • IDENTITY TYPE例如,将更改GENERATED ALWAYSGENERATED BY DEFAULT ON NULL,从而当您将其设置为 null 时,Oracle 将创建一个值。

我会去第二个。

ALTER TABLE IDENTITY_TABLE MODIFY ( ID GENERATED BY DEFAULT ON NULL AS IDENTITY );

杰夫·史密斯(Jeff Smith)的一篇很棒的帖子解释了这种情况

自动发布和身份列

于 2021-09-22T11:13:28.183 回答