GÖRMEZDEN INSERT yaparken nasıl bir tabloda yinelenen kimliği bulabilirim?

1 Cevap php

Ben biliyorum yaparken bir INSERT IGNORE girişleri dikkate alınmaz ve hatalar ne gerek burada bir uyarı olur ama yinelenen.

Senaryo: Biz 2 sütunlu bir tablo var (id, name) nerede İKİ vardır UNIQUE ve id olup PRIMARY KEY.

Bunu yaptığınızda, bir INSERT IGNORE sütun üzerinde name oluşturduğu sonraki AUTO_INCREMENT için id (hatta daha sonra DB yok olsa, onun sadece atlanır) ve aradığınızda LAST_INSERT_ID size verir bir sonraki id. Ancak ben id sorgu görmezden gereken neden olduğunu bulmak gerekir. Diğer bir deyişle, id name bu bir çift idi.

Herhangi MySQL / PHP hüner karşılandı. :)

Teşekkürler.

1 Cevap

Ben INSERT GÖRMEZDEN ile bu bilgileri ayıklamak sanmıyorum. Uyarı metni anahtar değerini içeren olsa bile, orada tamponlu çok uyarıları sadece, böylece bu dayanmaz olabilir.

Ben muhtemelen bir kopyasını ekleyerek kaçınır böylece sorguyu yeniden denemek istiyorsunuz. Her zaman yaparak elden önce tuşları algılayabilir

SELECT id FROM tab WHERE name in ('...value1...',...,'...valueN...')

Eklemek istediğiniz veri formatına bağlı olarak, ve nasıl (bir defada toplu, ya da bir satır) ekler yapıyorsun sen bilinen çoğaltmaları girilmesini önlemek için birçok şey yapabilirsiniz.

Öte yandan, bunun yerine bu satırlar için bir güncelleştirme gerçekleştirmek için-olurdu çiftleri kimlikleri çıkarma fikri olsaydı, o zaman REPLACE sözdizimi (http://dev.mysql kullanmalısınız. com/doc/refman/5.1/en/replace.html) ya da ON DUPLICATE KEY UPDATE yapısı (http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html )