Çoklu ekleme yapmak ve kimlikleri edinme

2 Cevap php

Ben bir tabloya bazı veri eklemek istiyorum

(id PK autoincrement, val)

kullanımı çok prospektüsü ile

INSERT INTO tab (val) VALUES (1), (2), (3) 

Bu son eklenen kimlikleri bir tablo elde etmek mümkün mü?

Ben emin değilim kendisin soran eğer bu formda tüm irade ediyorum: (n, n +1, n +2).

Ben mysql inodb kullanın.

2 Cevap

Kimden mysql docs:

If you insert multiple rows using a single INSERT statement, LAST_INSERT_ID() returns the value generated for the first inserted row only. The reason for this is to make it possible to reproduce easily the same INSERT statement against some other server.

Here's mysql forumlarda aynı soruyu soran kimse, ama hiç gerçekten yetkili cevap verilir. Onlar 'güvenli olması için, önce kilit tablo üzerinde arazi. Sonra kimlikleri sıralı olmak güvenebilirsiniz. '

Benim tavsiyem şudur:

Birçok satır takıyor ve diğer konuları engelleme sakıncası yoksa, kilit tablo ekler yapmak ve sonra kilidini. Tablo kilitli olduğundan, eklenen kimlikleri sıralı (veya ne olursa olsun değiştirmemesi ayardır) olmak güvenebilirsiniz.

Eğer ekler küçük bir sayı yapıyoruz ya da diğer konuları engellemek istemiyorsanız, sadece birer birer yapın ve sonra her () last_insert_id diyoruz.