在使用MySQL數(shù)據(jù)庫(kù)時(shí),我們可能需要一次性往數(shù)據(jù)庫(kù)中插入多條記錄。常見(jiàn)的想法是,如果記錄不存在就新增,如果存在就更新。然而,MySQL并沒(méi)有提供直接的批量新增方法。所以,我們需要手動(dòng)去實(shí)現(xiàn)這個(gè)過(guò)程。
// 定義批量插入的數(shù)據(jù) INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...), (value1, value2, value3, ...), (value1, value2, value3, ...), ... ON DUPLICATE KEY UPDATE column1=VALUES(column1), column2=VALUES(column2), column3=VALUES(column3), ...;
上述代碼中,我們需要先定義要批量插入的數(shù)據(jù),然后在后面加上ON DUPLICATE KEY UPDATE
關(guān)鍵字,表示如果存在就更新。接著,我們需要指定更新哪些字段,需要使用VALUES
函數(shù)獲取新的值。
值得注意的是,在執(zhí)行上述代碼之前,我們需要先在數(shù)據(jù)庫(kù)表中設(shè)置唯一索引。比如,在user
表中添加唯一索引:
ALTER TABLE user ADD UNIQUE INDEX uni_name (name);
這樣,當(dāng)我們批量插入數(shù)據(jù)時(shí),如果存在相同的name
字段,就會(huì)觸發(fā)唯一索引,導(dǎo)致插入失敗。此時(shí),就會(huì)執(zhí)行更新操作。