MySQL -> LAST_INSERT_ID() == BIGINT
0 отговора
32 прегледа
MySQL -> LAST_INSERT_ID() == BIGINT
Имам таблица с bigint auto_increment поле, което се явява FK за 3 други таблици, т.е. след insert в дадената таблица, правя още 3 insert-а, пазейки стойността в PHP, получена от mysql_insert_id(). Проблемът е, че когато стойността стане над горната граница на int, т.е. 2^32-1...или даже може би 2^31-1 (не знам mysql_insert_id() дали връща unsigned), става изместване на битовете и се получават некоректни резултати. Това си го пише и в docs де...та нещото до което стигнах е да пазя резултата от LAST_INSERT_ID() в MySQL. Нещо такова:
INSERT INTO T () VALUES ();
SET @LAST_INSERT_ID:=LAST_INSERT_ID();
INSERT INTO T1 (...) VALUES (...@LAST_INSERT_ID...)
...
Чудех се, обаче, дали има друг начин?
Everything louder than everything else...
INSERT INTO T () VALUES ();
SET @LAST_INSERT_ID:=LAST_INSERT_ID();
INSERT INTO T1 (...) VALUES (...@LAST_INSERT_ID...)
...
Чудех се, обаче, дали има друг начин?
Everything louder than everything else...