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
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.
INSERT INTO ... YİNELENEN ... ANAHTARI...
&; EKLE YOKSAY" vs "EKLE ......
Farklı isimle 2 Ders Kodu yinelenen ol...
Nasıl "yinelenen OLMADAN birden f...
taklit ne kadar "Ekle Yoksay"...