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

  • hoorahjencar

    hoorahjencar

    6 HAZİRAN 2007
  • skiesofblack.net

    skiesofblack

    14 HAZİRAN 2009
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011