I am trying to run this update statement but informix doesn’t allow me to.
I have a table, named ITEMS and below I have selected some records from it.
SELECT SHORT_SKU, ITEMS."STYLE" FROM ITEMS;
SHORT_SKU STYLE
--------- -----
01846173 null
01811752 null
01811748 null
Trying to run the below UPDATE statement, informix says syntax error.
UPDATE ITEMS SET ITEMS."STYLE" = 'M' WHERE SHORT_SKU = '01846173';
^ syntax error here
Then I changed (as below) and got “Column (style) not found in any table in the query (or SLV is undefined).”
UPDATE ITEMS SET STYLE = 'M' WHERE SHORT_SKU = '01846173';
How do I update the “STYLE” field?
UPDATE 1
I did a change to one of WAS data source’s custom properties, ifxDELIMIDENT. Originally it was blank. So, I changed it to true. Restarted WAS. And I couldn’t login to our application. SQLExceptions were thrown by WAS but was not able to see the stack trace because WAS has truncated the last few lines. After changing the property back to blank, I was able to login to our application.
I tried another approach, which was to write a Java class that updates the ITEMMST.STYLE column. I executed this from a shell script. In the shell script, I defined and exported the variable DELIMIDENT with the value ‘Y’. But I am still getting ‘Syntax error’.
UPDATE 2
I managed to update the column. This is done by adding the ‘DELIMIDENT=Y’ property at the end of the connection string which will be passed to the DriverManager object when opening the database connection.
But, this won’t work for our web application because it uses the WebSphere data source to create the db connection. It would be super if there’s a way to set this property in the Informix environment itself.
There are 2 solutions for this.
For the 1st option, we had a problem after setting the data source to ‘true’. Suddenly all our queries did not work. After much troubleshooting, we found out that by setting the ‘ifxDELIMIDENT’ property to ‘true’, it also changed Informix to be case sensitive. In our Java code, we have all the column names in uppercase, and in Informix (Example: resultSet.getString(“STYLE”)), but the table column names are lowercase (Example: ‘style’). This was why after changing this property, we were not able to login to our application Unfortunately this behavior was not documented anywhere in IBM’s Info Centre nor in the internet.
We opted for the 2nd option which involved changing the affected column names to another column name (Example: Changed ‘STYLE’ to ‘ITEM_STYLE’).