یکی از راحتترین و سریعترین روشها استفاده از عبارت INSERT IGNORE
است. زمانی که از این روش استفاده میکنید، اگر رکوردی با کلید منحصر به فرد موجود باشد، در واقع درج رکورد به سادگی نادیده گرفته میشود و پیغام خطایی صادر نمیشود. مثلاً:
INSERT IGNORE INTO `table` (a,b,c) values (1,2,3);
گزینه دیگر، استفاده از عبارت INSERT … ON DUPLICATE KEY UPDATE
است. این روش همچنین اجازه میدهد که در صورت وجود رکورد مشابه، به روزرسانی انجام شود. برای مثال:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
استفاده از REPLACE
نیز گزینه مناسبی است، اما این روش در واقع رکورد موجود را حذف و سپس یک رکورد جدید وارد میکند، که ممکن است برای شرایط خاص مثلاً وقتی که نمیخواهید دادههای قبلی را از دست بدهید، مناسب نباشد. ساختار آن به شکل زیر است:
REPLACE INTO `table` values (1,2,3)
در نهایت، یک روش دیگر که میتواند در شرایط خاص مؤثر باشد، استفاده از یک زیر query با شرط WHERE NOT EXISTS
است. یعنی ابتدا بررسی شود که آیا رکورد مشابهی وجود دارد یا خیر و سپس در صورت عدم وجود، دادهها درج میشود. به این صورت:
INSERT INTO `table` (a, b, c)
SELECT 1, 2, 3 FROM DUAL
WHERE NOT EXISTS (
SELECT * FROM `table`
WHERE a = 1 LIMIT 1
);