REPLACE INTO ifadesi, semantik olarak DELETE + INSERT işlemlerinin birleşimidir: Birincil anahtar eşleştiğinde mevcut satırı üzerine yazar; eşleşme bulunamadığında ise yeni bir satır ekler.
Söz dizimi
REPLACE INTO table_name [(column_name,...)] VALUES ({Constant|NULL|DEFAULT},...),(...),...
Parametreler
| Parametre | Açıklama |
|---|---|
table_name |
Hedef tablo. |
column_name |
(İsteğe bağlı) Doldurulacak sütunlar. Tüm sütunlara tanımlı sıralarına göre değer eklemek için bu kısmı atlayın. |
Constant|NULL|DEFAULT |
Her sütun için değer: bir sabit değer, NULL veya sütunun DEFAULT değeri. |
Not
Birincil anahtar, tek sütunlu bir birincil anahtar veya birden çok sütunu kapsayan bileşik bir birincil anahtar olabilir.
Çalışma mekanizması
REPLACE INTO ifadesini çalıştırdığınızda sistem, aynı birincil anahtara sahip bir satırın zaten var olup olmadığını kontrol eder:
Satır mevcutsa — Sistem mevcut satırı siler ve yeni satırı ekler.
Satır mevcut değilse — Sistem satırı doğrudan ekler.
Örnekler
Sütun adlarıyla tek satır ekleme
REPLACE INTO customer(customer_id,customer_name,phone_num,city_name,sex,id_number,home_address,office_address,age,login_time)
VALUES
(002367,'Bob','13900001234','Hangzhou',0,'987300','WestLake','CloudTown',23,'2018-03-02 10:00:00');
Sütun adları olmadan birden çok satır ekleme
Tüm sütunlara tanımlı sıralarına göre değer sağladığınızda sütun listesini atlayın.
REPLACE INTO customer VALUES
(002367,'John','13900001111','Hangzhou',0,'987300','WestLake','CloudTown',23,'2018-03-02 10:00:00'),
(002368,'Adam','13900002222','Hangzhou',0,'987300','WestLake','CloudTown',28,'2018-08-01 11:00:00'),
(002369,'Brook','13900003333','Hangzhou',1,'987300','WestLake','CloudTown',35,'2018-09-12 08:11:00');