INFORMIX错误:SERIAL列可能无法更新



在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"可能无法更新,这会进一步导致错误。

我应该怎么做来修复这个错误?

使用版本:

  • 单面的9.7
  • Informix 12.10

在某些数据库中,Uniface支持标识/串行列,而在其他数据库中则不支持。

对于Informix, Uniface有一个驱动程序选项来启用它:USYS$INF_PARAMS serial insert

字段的数据类型应该是:(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

将评论转换为答案

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

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

我看了你之前的一个Uniface + Informix问题,意识到我对Uniface的心态一无所知。

最后一种可能的方法是将列的类型从SERIAL更改为INTEGER,然后可能使用SEQUENCE来提供作为SERIAL列特征的惟一值。Informix 12.10具有序列。这将影响到将数据插入该表的其他代码。

最新更新