title: The Informix is not throwing error when trying to update a row which is not present?
body: <p>We are analyzing an Informix behavior in production. When trying to update a row which is not present the application is getting "-346: Could not update a row in the table" error in production.</p>
  
  <p>However, when we try the same in the dev region, the application works fine.</p>
  
  <p>Whether the Informix should throw error always when updating a row which is not present or is it configurable at Informix level?</p>
  
  <p>The application is written in C and the corresponding update queries are present in the ".ec" program.</p>
  
  <p>Also, is there any other way Informix throws a -346 error?</p>
  
  <blockquote>
    <p>Edit: The SQL is as follows:</p>
  
  <pre><code>update &lt;table&gt; set serial_number = &lt;number1&gt; where serial_number = &lt;number2&gt; 
  </code></pre>
    
    <p>The SQL Error is:</p>
  
  <pre><code> Execute SQL ERROR
  
      SQL CODE = -346
      SQLERM =
      SQLERRP =
      SQLERRD[0] = 1
      SQLERRD[1] = -100
      SQLERRD[2] = 0
      SQLERRD[3] = 1
      SQLERRD[4] = 56
      SQLERRD[5] = 0
      SQLWARN =
  </code></pre>
  </blockquote>
  
  <p>Edit Again:</p>
  
  <p>The source code is as follows:</p>
  
  <pre><code>const char *sql = "update table_not_named set serial_number = ? where serial_number = ?"; 
  
  if ( prepared_sql == 0 )
  {
      exec sql prepare update_sql from :sql;
      if ( sqlca.sqlcode != SQL_OK )
      {
          logSqlError( log_err, __func__, "Prepare" );
          return FAIL;
      }
      prepared_sql = 1;
  }
  
  exec sql execute update_sql using :db_new_serial_number, :db_old_serial_number;
  
  if ( sqlca.sqlcode != SQL_OK )
  {
      logSqlError( log_err, __func__, "Execute" );
      return FAIL;
  }
  </code></pre>