Seharusnya tidak ada bedanya, sintaksnya sama. Pastikan Anda memiliki kedua kunci yang ditentukan sebagai kolom. Misalnya:
REPLACE INTO `my_table` ( `key1`, `key2`, `othercolumn1` /* , ... */ )
VALUES ( 'widgets', 14, 'Blue widget with purple trim' );
EDIT
Inilah pengujian saya yang saya jalankan di database pengujian saya untuk memastikan bahwa saya tidak akan menghancurkan data Anda. Tentu saja, saya mendorong Anda untuk mencobanya jika Anda tidak yakin!
CREATE SCHEMA `my_testdb`;
USE `my_testdb`;
CREATE TABLE `my_table` (
`key1` VARCHAR(20) NOT NULL,
`key2` INTEGER NOT NULL,
`othercolumn1` VARCHAR(50),
CONSTRAINT PRIMARY KEY (`key1`, `key2`) );
REPLACE INTO `my_table` ( `key1`, `key2`, `othercolumn1` )
VALUES ( 'widgets', 14, 'Green widget with fuchsia trim' );
REPLACE INTO `my_table` ( `key1`, `key2`, `othercolumn1` )
VALUES ( 'widgets', 15, 'Yellow widget with orange trim' );
REPLACE INTO `my_table` ( `key1`, `key2`, `othercolumn1` )
VALUES ( 'thingamabobs', 14, 'Red widget with brown trim' );
REPLACE INTO `my_table` ( `key1`, `key2`, `othercolumn1` )
VALUES ( 'widgets', 14, 'Blue widget with purple trim' );
SELECT * FROM `my_table`;
Ini hasil saya:
key1 key2 othercolumn1
widgets 14 Blue widget with purple trim
widgets 15 Yellow widget with orange trim
thingamabobs 14 Red widget with brown trim
EDIT LAIN
Saya rasa saya mengerti apa yang Anda bicarakan dalam dokumentasi, kebingungan tentang kolom unik:
Itu mengacu pada keadaan yang agak dibuat-buat di mana baris yang Anda ganti dengan konflik tidak hanya dengan kunci utama yang ada, tetapi juga dengan kolom unik lainnya. Berikut contoh lain untuk mengilustrasikan hal ini:
CREATE SCHEMA `my_testdb2`;
USE `my_testdb2`;
CREATE TABLE `my_table` (
`key1` VARCHAR(20) NOT NULL,
`key2` INTEGER NOT NULL,
`color` VARCHAR(20) NOT NULL UNIQUE,
`othercolumn1` VARCHAR(50),
CONSTRAINT PRIMARY KEY (`key1`, `key2`) );
REPLACE INTO `my_table` ( `key1`, `key2`, `color`, `othercolumn1` )
VALUES ( 'widgets', 14, 'green', 'Green widget with fuchsia trim' );
REPLACE INTO `my_table` ( `key1`, `key2`, `color`, `othercolumn1` )
VALUES ( 'widgets', 15, 'yellow', 'Yellow widget with orange trim' );
REPLACE INTO `my_table` ( `key1`, `key2`, `color`, `othercolumn1` )
VALUES ( 'thingamabobs', 14, 'red', 'Red widget with brown trim' );
REPLACE INTO `my_table` ( `key1`, `key2`, `color`, `othercolumn1` )
VALUES ( 'widgets', 14, 'yellow', 'Yellow widget with purple trim' );
SELECT * FROM `my_table`;
Perhatikan bagaimana operasi REPLACE terakhir tidak hanya bertentangan dengan (key1
, key2
) kunci utama, dari REPLACE pertama, tetapi juga dengan warna unik dari yang kedua. Dalam hal ini, KEDUA baris dihapus sebelum operasi REPLACE terakhir dilakukan sehingga hasilnya tidak ada konflik. Anda akan mendapatkan hanya dua baris:
key1 key2 color othercolumn1
widgets 14 yellow Yellow widget with purple trim
thingamabobs 14 red Red widget with brown trim
Kedua baris dengan (key1
, key2
) sama dengan ('widget', 14) DAN baris dengan warna 'kuning' hilang karena baris baru bertentangan dengan beberapa batasan unik di tabel.
Semoga ini bisa membantu!