SORU
17 Ocak 2013, PERŞEMBE


Ekle aynı Anahtarı Güncelleştirme Yinelenen

Etrafta aradık fakat eğer mümkünse bulamadı ettik.

Bu MySQL sorgu var:

INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)

Alan kimliği bir "benzersiz bir dizin", böylece iki tane olamaz. Şimdi eğer aynı kimliği zaten veritabanında varsa, onu güncellemek istiyorum. Ama gerçekten tüm bu alan tekrar belirtmek zorunda falan mıyım:

INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) 
ON DUPLICATE KEY UPDATE a=2,b=3,c=4,d=5,e=6,f=7,g=8

Ya da:

INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) 
ON DUPLICATE KEY UPDATE a=VALUES(a),b=VALUES(b),c=VALUES(c),d=VALUES(d),e=VALUES(e),f=VALUES(f),g=VALUES(g)

Zaten Ekle her şey belirtilmiş

Ekstra bir not, geçici bir çözüm bulmak için KİMLİĞİNİ almak için kullanmak istiyorum!

id=LAST_INSERT_ID(id)

Biri en etkili yolu nedir bana umut ediyorum.

CEVAP
17 Ocak 2013, PERŞEMBE


UPDATE deyimi eski alanlar yeni değeri güncelleştirilmesi böylece verilir. Eğer eski değerler yeni olanlar aynı ise, neden her durumda güncellemek için ihtiyacınız var?

Eg. sütunlarınızı g 10 *zaten* 13*; yeniden güncelleme ihtiyacı olacağına dair* 12 *olarak ayarlanır.

Alternatif olarak, kullanabilirsiniz:

INSERT INTO table (id,a,b,c,d,e,f,g)
VALUES (1,2,3,4,5,6,7,8) 
ON DUPLICATE KEY
    UPDATE a=a, b=b, c=c, d=d, e=e, f=f, g=g;

LAST_INSERT_ID; arka uç belirtmeniz gerekir id get için aynı için kullandığınız uygulama.

LuaSQL için, conn:getlastautoid() bir değer getirir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • Jonnyriddlin1

    Jonnyriddlin

    4 Ocak 2007
  • MVLV28

    MVLV28

    17 Mart 2008