INFORMIX ERROR: A SERIAL column may not be updated

INFORMIX ERROR: A SERIAL column may not be updated

在 Uniface 上更新实体时出现错误。

uniface 中数据库的错误信息如下:

"INFORMIX ERROR (SQLSTATE: IX000): A SERIAL column (my_column) may not be updated.      
 SQLCODE -232: A SERIAL column (my_column) may not be updated."

我不明白为什么列“my_column”可能不会更新,这会进一步导致错误。

我应该怎么做才能修复错误?

使用了以下版本:

正在将评论转为答案。

您不能像错误消息所说的那样更新 SERIAL 列 — 即使新值与旧值相同也不行。

您可以通过不尝试更新列来避免错误 — 不要在 UPDATE 语句中列出它。

我看了你之前的 Uniface + Informix 问题,发现我对 Uniface 的思维方式一无所知。

一个可能的最后手段是将列的类型从 SERIAL 更改为 INTEGER,然后可能使用 SEQUENCE 来提供作为 SERIAL 列特征的唯一值。 Informix 12.10 有序列。这对将数据插入此 table.

的其余代码有影响

在某些数据库上,Uniface 支持 identity/serial 列,而在其他数据库上则不支持。

对于 Informix,Uniface 有一个驱动程序选项来启用它: USYS$INF_PARAMS 串行插入

您的字段的数据类型应该是: (S)A10 系列

参见:

https://www3.rocketsoftware.com/rocketd3/support/documentation/Uniface/10/uniface/dbmsSupport/dbmsDrivers/Informix/concepts/INF_DRIVER_OPTS.htm?tocpath=DBMS%20Support%7CDatabase%20Connectors%7CInformix%7CInformix%20Connector%20Options%7C_____0

https://www3.rocketsoftware.com/rocketd3/support/documentation/Uniface/10/uniface/dbmsSupport/dbmsDrivers/Informix/concepts/INF_DATA_TYPES.htm?tocpath=DBMS%20Support%7CDatabase%20Connectors%7CInformix%7C_____8