web-dev-qa-db-fra.com

Mysql obtient le dernier identifiant d'une table spécifique

Je dois obtenir le dernier identifiant d'insertion d'une table insérée spécifique?. Disons que j'ai ce code:

INSERT INTO blahblah (test1, test 2) VALUES ('test1', 'test2');
INSERT INTO blahblah2 (test1, test 2) VALUES ('test1', 'test2');
INSERT INTO blahblah3 (test1, test 2, lastid) VALUES ('test1', 'test2', last id of blahblah);

Comment obtenir l'identifiant d'insertion de la table blahblah dans la table blahblah3? LAST_INSERT_ID () ne vous donne que le dernier identifiant d'insertion

Cordialement, Simon :)

15
simon

Vous pouvez utiliser la fonction LAST_INSERT_ID () . Essaye ça:

INSERT INTO blahblah (test1, test2) VALUES ('test1', 'test2');

SELECT LAST_INSERT_ID() INTO @blahblah;

INSERT INTO blahblah2 (test1, test2) VALUES ('test1', 'test2');

INSERT INTO blahblah3 (test1, test2, lastid) VALUES ('test1', 'test2', @blahblah);
15
Saharsh Shah

Est-ce ce que vous recherchez?

SELECT id FROM blahblah ORDER BY id DESC LIMIT 1
13
x4rf41

Si vous voulez le faire en une seule instruction, utilisez:

INSERT INTO blahblah3 (test1, test2, lastid)
VALUES ('test1', 'test2', (select MAX(id) FROM blahblah));

De cette façon, vous n'avez pas besoin d'enregistrer les variables à l'avance, ce qui garantit que vous obtiendrez le dernier ID à ce moment précis.

9
flu

Vous pouvez utiliser la fonction mysql_insert_id(); pour obtenir une réponse rapide.

Mais si vous utilisez un site à fort trafic, il existe des chances de résultats précis.

2
Vishnu Renku

Vous pouvez utiliser la fonction LAST_INSERT_ID () .

INSERT INTO blahblah (test1, test 2) VALUES ('test1', 'test2');
    //this query will return id. Save it in one variable

 select LAST_INSERT_ID()

En bref, enregistrez le dernier identifiant d'insertion dans une variable, puis utilisez-le dans blahblah3

1
Bhavik Shah

vous pouvez également trouver le dernier identifiant par requête dans le codeigniter

$this->db->order_by('column name',"desc");
   $this->db->limit(1);
 $id=  $this->db->get('table name');
0
Nazir Ali