MySQL -> LAST_INSERT_ID() == BIGINT

0 отговора 32 прегледа
#1

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...
Отговор