Etrafı araştırdım ama mümkün olup olmadığını bulamadım.
Bu MySQL sorgusu var:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)
Alan kimliğinin "benzersiz bir dizini" vardır, bu nedenle bunlardan iki tanesi olamaz. Şimdi aynı kimlik veritabanında zaten varsa, güncellemek istiyorum. Ama gerçekten tüm bu alanları tekrar belirtmek zorunda 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
Veya:
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 ekte olan her şeyi belirttim ...
Ek bir not, kimlik almak için bu işi kullanmak istiyorum!
id=LAST_INSERT_ID(id)
Umarım biri bana en etkili yolun ne olduğunu söyleyebilir.
a=VALUES(a), b=VALUES(b), ...
gitmeniz gereken yoldur. TümINSERT ON DUPLICATE KEY UPDATE
ifadelerim için böyle yapıyorum .