php çoklu satırlarda mysql_insert_id?

3 Cevap php

Is it possible to get the auto incremented ids from a query which inserts multiple rows? eg:

INSERT INTO tablo (sütun1, sütun2) VALUES (1, 2), (3, 4), (5, 6);

Olarak ise, tabloya herhangi bir şey takmadan OLMADAN İLERİ otomatik artış değerini bulmak için bir yolu var mı?

Teşekkürler

3 Cevap

Bildiğim kadarıyla auto_increment kimlikleri arasındaki boşlukları doldurmak değil ve işlem atomik. Yani bir satırda olacağını varsayabiliriz.

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

Tek INSERT deyimi kullanarak birden fazla satır eklerseniz, LAST_INSERT_ID() sadece ilk eklenen satıra için oluşturulan değeri döndürür.

Yani hayır, kolayca tüm kimlikleri almak değil, ancak assume, sürekli vardır ki. Sen never olsa varsayımlara güvenmek gerekir. Eğer toplu ekledikten sonra bir sonraki id O geleceğini tahmin etmek istediğiniz gibi geliyor? Eğer öyleyse, hatta bu girişimi ve bunu yapmak istediğiniz ne olursa olsun yapmak için başka bir yol olduğunu sanmıyorum. :)

Eğer kullanabileceğiniz bir sonraki auto_increment kimliği almak için:

SELECT auto_increment FROM information_schema.tables WHERE table_name = 'table-you-want-to-check';

Ancak, kodun mantık auto_increment id veya last_insert_id() güvenmek istemeyebilirsiniz. Örneğin, iki kişi, A & diyelim B, aynı anda yakın adresinden db soru ekliyoruz ve kişinin sorunun id belirlemek için last_insert_id() kullanıyorsunuz. Her ikisi de aynı anda kendi sorunuzu göndermek ne olur? last_insert_id() kişi A veya B mi?

Bu sorunu aşmak için bir yöntem, id artırılır otomatik yerine ya da ilave olarak, bir "ön-tanımlı" id ya da guid kullanmaktır.