Thanks Johnny,
In this case I wouldn't be able to insert a completely new row but
replace the existent one, so row count would stay the same.
This is a storage table with the only unique constraints on:
dda_debits_id column.
the test data is very small, so I would've noticed any duplicates and
they wouldn't make it to the table anyway with or without INSERT IGNORE.

+-----------------------+-------------+------+-----+---------+----------------+
| Field                 | Type        | Null | Key | Default |
Extra          |
+-----------------------+-------------+------+-----+---------+----------------+
| dda_debits_id         | int(11)     | NO   | PRI |    0    
|                |
| created_on            | datetime    | YES  |     | NULL   
|                |
| reference_number      | varchar(18) | YES  |     | NULL   
|                |
| user_format_debit_ref | varchar(18) | YES  |     | NULL   
|                |
| amount                | int(11)     | YES  |     | NULL   
|                |
| debit_date            | datetime    | YES  |     | NULL   
|                |
| status                | tinyint(1)  | YES  |     | NULL   
|                |
| debit_type            | tinyint(1)  | YES  |     | NULL   
|                |
| recharge_for_id       | int(11)     | YES  |     | NULL   
|                |
| processed_on          | datetime    | YES  |     | NULL   
|                |
| service_user_id       | int(11)     | YES  |     | NULL   
|                |
+-----------------------+-------------+------+-----+---------+----------------+

Claudio, good point.
Unfortunately, didn't work.  I tried it before but no luck.
Thanks,
Igor





On 07/09/2011 02:43 PM, Johnny Withers wrote:
>
> It seems to me that your insert statement is trying to insert
> duplicate rows into the storage table. This is why insert ignore and
> replace work.
>
>> On Jul 9, 2011 3:49 AM, "Igor Shevtsov" <nixofort...@googlemail.com
>> <mailto:nixofort...@googlemail.com>> wrote:
>>
>> Hi all,
>> I can't explain strange behaviour of the INSERT statement in the stored
>> procedure.
>> The idea is to generate a list based on the output of 3 INNER JOIN of
>> regularly updated tables.
>> Something like :
>>
>> INSERT INTO storage
>> (column list)
>> SELECT
>> column list
>> FROM t1 JOIN t2
>> ON t1.x=t2.y
>> JOIN t3
>> ON t2.z=t3.w
>> WHERE CONDITIONS;
>>
>> The procedure runs daily by crontask and it inserts correct number of
>> output rows.
>>
>> But after It runs and populated a storage table, I added new entries and
>> expect to find them in the storage table. Even though they were picked
>> up by SELECT statement, they haven't been INSERTed into the storage
>> table.
>> If I DELETE or TRUNCATE from the storage table and run the procedure all
>> newly added entries and existed entries are their, but if I add new rows
>> and run the procedure again It doesn't update the table.
>> All tables have a unique identifier, so duplicate errors are impossible.
>> I use INNODB engine for all tables.
>> I understand that stored procedure is a precompiled thing and I believe
>> it could be something to do with cache but I couldn't find proper
>> explanation or similar case online.
>> I found when I use INSERT IGNORE INTO or INSERT REPLACE INTO, I receive
>> the proper result with newly entries added to the storage table.
>> Any ideas guys?
>> Have a nice weekend ALL.
>> Cheers,
>> Igor
>>
>> --
>> MySQL General Mailing List
>> For list archives: http://lists.mysql.com/mysql
>> To unsubscribe:  
>>  http://lists.mysql.com/mysql?unsub=joh...@pixelated.net
>>

Reply via email to