At 11:44 AM +1200 10/1/01, marcus davy wrote: >If you specify the keyword IGNORE in an INSERT, any rows that duplicate >an existing PRIMARY or UNIQUE key in the table are ignored and are not >inserted. >But the last_insert_id() function still appears to increment by one >in situations when the query is not adding any new information to >the table. > >This looks like a bug to me can anyone enlighten me to this anomaly?
Why is it a bug? INSERT IGNORE can't fully assess whether the record is to be ignored until the record's contents have been generated. > >I am using 3.23.42-log on red hat 7.1 (also same results on 3.23.40-log). >I have searched the list archive for this topic but havent found anything yet. > > >mysql commands to test this below > >CREATE DATABASE test; >use test; >CREATE TABLE organism ( > OM varchar(100) NOT NULL unique, > OM_ID tinyint(1) NOT NULL auto_increment, > PRIMARY KEY (OM_ID) > ) TYPE=MyISAM; > >INSERT IGNORE INTO organism VALUES('foo', NULL); >INSERT IGNORE INTO organism VALUES('fodda', NULL); >SELECT * FROM organism; > >#+-------+-------+ >#| OM | OM_ID | >#+-------+-------+ >#| foo | 1 | >#| fodda | 2 | >#+-------+-------+ >#2 rows in set (0.00 sec) > >SELECT last_insert_id(); > >#+------------------+ >#| last_insert_id() | >#+------------------+ >#| 2 | >#+------------------+ >#1 row in set (0.00 sec) > >INSERT IGNORE INTO organism VALUES('fodda', NULL); > >#Query OK, 0 rows affected (0.00 sec) ># NO NEW INFORMATION ADDED > >SELECT * FROM organism; >#+-------+-------+ >#| OM | OM_ID | >#+-------+-------+ >#| foo | 1 | >#| fodda | 2 | >#+-------+-------+ >#2 rows in set (0.01 sec) > >SELECT last_insert_id(); > >#+------------------+ >#| last_insert_id() | >#+------------------+ >#| 3 | >#+------------------+ >#1 row in set (0.01 sec) > ># last_insert_id has incremented by 1, by adding a further new field, ># last_insert_id() will correctly show the last inserted id again -- Paul DuBois, [EMAIL PROTECTED] --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php