在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具有序列。这将影响到将数据插入该表的其他代码。