Bug #30895 | LAST_INSERT_ID() returning incorrect value | ||
---|---|---|---|
Submitted: | 7 Sep 2007 14:20 | Modified: | 23 Sep 2007 11:51 |
Reporter: | Tanner Ratzlaff | Email Updates: | |
Status: | Not a Bug | Impact on me: | |
Category: | MySQL Server: General | Severity: | S2 (Serious) |
Version: | 5.0.45 | OS: | Linux |
Assigned to: | CPU Architecture: | Any | |
Tags: | insert, LAST_INSERT_ID |
[7 Sep 2007 14:20]
Tanner Ratzlaff
[7 Sep 2007 19:41]
Hartmut Holzgraefe
Can you also provide the definitions of the trigger and the BATCH table?
[7 Sep 2007 19:50]
Tanner Ratzlaff
CREATE TABLE `prep`.`BATCH` ( `ID` int(10) unsigned NOT NULL auto_increment, `INSTITUTION_FKEY` int(10) unsigned NOT NULL, `NAME` varchar(100) NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `INSTITUTION_FKEY_2` (`INSTITUTION_FKEY`,`NAME`), KEY `INSTITUTION_FKEY` (`INSTITUTION_FKEY`) ) ENGINE=InnoDB AUTO_INCREMENT=9021 DEFAULT CHARSET=latin1; ENGINE=INNODB; DROP TRIGGER IF EXISTS init_inst_bi; delimiter // CREATE TRIGGER init_inst_bi BEFORE INSERT ON prep.FILE_INFO FOR EACH ROW BEGIN DECLARE CONTINUE HANDLER FOR 1329 SET @inst_fkey = NULL; SET @inst_fkey = NULL; SELECT INST_FKEY INTO @inst_fkey FROM INST_ERRORS WHERE INST_FKEY = NEW.INSTITUTION_FKEY LIMIT 1; IF (@inst_fkey IS NULL) THEN INSERT INTO INST_ERRORS (INST_FKEY, ERROR_FKEY) SELECT NEW.INSTITUTION_FKEY, ERROR.ID FROM ERROR WHERE ERROR.ISCURRENT = 1 AND ERROR.ISDEFAULT = 1; END IF; INSERT IGNORE INTO INST_STATUS (INST_FKEY) VALUES (NEW.INSTITUTION_FKEY); IF (NEW.ID = 0) THEN SET @max_id = NULL; SELECT MAX(ID) INTO @max_id FROM FILE_INFO; IF (@max_id IS NULL) THEN SET @max_id = 0; END IF; SET NEW.ID = @max_id+1; END IF; SET NEW.FILE_NAME = CONCAT(DATE_FORMAT(NOW(), '%Y%m%d%h%i%s'), '_', NEW.ID); END; //
[18 Sep 2007 19:02]
Tanner Ratzlaff
I think I found the issue. In my tirgger I had "SET NEW.ID = @max_id+1;" and this was screwing up the auto_increment/LAST_INSERT_ID().
[23 Sep 2007 11:51]
Valeriy Kravchuk
So, looks like this is not a bug.