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?
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
______________________________________________________
The contents of this e-mail are privileged and/or confidential to the
named recipient and are not to be used by any other person and/or
organisation. If you have received this e-mail in error, please notify
the sender and delete all material pertaining to this e-mail.
______________________________________________________
---------------------------------------------------------------------
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