Satır İlk varsa satır yerine kontrol daha (SQL) yoksa ilk önce yerleştirin güncellemek?

4 Cevap php

Ben her zaman bir satır varsa görmek, ve sonra benim yeni verilerle güncellemek ya da yoksa eklemek için bir tablo kontrol yöntemi kullanılır, ama o bana sadece bir güncelleme yapıyor yanlış olacağını düşünerek var Etkilenen satır ise, o zaman bir ekleme deyimi yapmak, potansiyel olarak benim komut hızlandırmak ve sunucu üzerinde daha az yük koymak olabilir.

Herkes bu herhangi bir sorun öngörüyor?

4 Cevap

Ne nesi var REPLACE?

Tabloda eski bir satır, bir birincil anahtar veya benzersiz bir dizin için yeni bir satır olarak aynı değeri varsa, eski satır yeni bir satır önce silinmiş olması haricinde tam INSERT gibi çalışır, DEĞİŞTİR eklenir.

: Eğer birincil anahtarının demek "bir satır olup olmadığını görmek" ile ise, tarafından 12.2.5.3. INSERT ... ON DUPLICATE KEY UPDATE Syntax ilginizi çekebilir

If you specify ON DUPLICATE KEY UPDATE, and a row is inserted that would cause a duplicate value in a UNIQUE index or PRIMARY KEY, an UPDATE of the old row is performed. For example, if column a is declared as UNIQUE and contains the value 1, the following two statements have identical effect:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

UPDATE table SET c=c+1 WHERE a=1;

Belki bunu kullanabilirsiniz?

Eklemek için çalışıyor, ve bir YİNELENEN KEY hata varsa, bu çizgi güncellemeleri ... Ama bu hat ilk varsa kontrol etmek değil sağlar: Eğer tt tam etrafında başka bir yol yapıyor, dedi ne göre.

Yine de, sadece birincil anahtar / benzersiz dizin çalışır; değil nerede yan tümcesi her türlü.

Bir satır onu bunu güncellemek olacak, varsa, ekleyecektir yoksa DEĞİŞTİR deyimi, aynı şeyi yapar.

INSERT IGNORE burada da yararlıdır.