REST API 插入具有 'GENERATED ALWAYS' 列的 table
REST API inserting into a table with 'GENERATED ALWAYS' column
我正在使用 Oracle 的自治数据库服务,ORDS 提供 REST 功能。
更新 table(文档 here)时,当我有一个标识列 id
即 GENERATED ALWAYS
时,似乎 POST 请求即使在请求正文中未提供 id
值时,也会被 REST 服务解析为 id: null
.
这给了我 Error Message: ORA-32795: cannot insert into a generated always identity column ORA-06512: at line 4
。
使用 SQL 语句插入 table 而未指定 id
列按预期工作。
有没有办法在允许 POST 更新的同时始终生成标识列(因此无法指定新行的 ID)?
Auto Rest 功能将始终生成所有列,因此除了
之外没有其他解决方案
- 开发您自己的
POST
方法并省略 IDENTITY
列
- 更改
IDENTITY TYPE
,例如从 GENERATED ALWAYS
更改为 GENERATED BY DEFAULT ON NULL
,因此当您将其设置为 null 时,Oracle 将创建一个值。
我会去第二次。
ALTER TABLE IDENTITY_TABLE MODIFY ( ID GENERATED BY DEFAULT ON NULL AS IDENTITY );
Jeff Smith 对这种情况的解释post很棒
我正在使用 Oracle 的自治数据库服务,ORDS 提供 REST 功能。
更新 table(文档 here)时,当我有一个标识列 id
即 GENERATED ALWAYS
时,似乎 POST 请求即使在请求正文中未提供 id
值时,也会被 REST 服务解析为 id: null
.
这给了我 Error Message: ORA-32795: cannot insert into a generated always identity column ORA-06512: at line 4
。
使用 SQL 语句插入 table 而未指定 id
列按预期工作。
有没有办法在允许 POST 更新的同时始终生成标识列(因此无法指定新行的 ID)?
Auto Rest 功能将始终生成所有列,因此除了
之外没有其他解决方案- 开发您自己的
POST
方法并省略IDENTITY
列 - 更改
IDENTITY TYPE
,例如从GENERATED ALWAYS
更改为GENERATED BY DEFAULT ON NULL
,因此当您将其设置为 null 时,Oracle 将创建一个值。
我会去第二次。
ALTER TABLE IDENTITY_TABLE MODIFY ( ID GENERATED BY DEFAULT ON NULL AS IDENTITY );
Jeff Smith 对这种情况的解释post很棒