چگونه می‌توان در MySQL رکوردی را در صورت عدم وجود در جدول ایجاد کرد؟

mohsen2 هفته قبل2 هفته قبل
ارسال شده در
sql
1. استفاده از INSERT IGNORE INTO

یکی از راحت‌ترین و سریع‌ترین روش‌ها استفاده از عبارت INSERT IGNORE است. زمانی که از این روش استفاده می‌کنید، اگر رکوردی با کلید منحصر به فرد موجود باشد، در واقع درج رکورد به سادگی نادیده گرفته می‌شود و پیغام خطایی صادر نمی‌شود. مثلاً:

      INSERT IGNORE INTO `table` (a,b,c) values (1,2,3);

    
2. استفاده از ON DUPLICATE KEY UPDATE

گزینه دیگر، استفاده از عبارت INSERT … ON DUPLICATE KEY UPDATE است. این روش همچنین اجازه می‌دهد که در صورت وجود رکورد مشابه، به روزرسانی انجام شود. برای مثال:

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

    
3. استفاده از REPLACE INTO

استفاده از REPLACE نیز گزینه مناسبی است، اما این روش در واقع رکورد موجود را حذف و سپس یک رکورد جدید وارد می‌کند، که ممکن است برای شرایط خاص مثلاً وقتی که نمی‌خواهید داده‌های قبلی را از دست بدهید، مناسب نباشد. ساختار آن به شکل زیر است:

      REPLACE INTO `table` values (1,2,3)

    
4. استفاده از شرط NOT EXISTS

در نهایت، یک روش دیگر که می‌تواند در شرایط خاص مؤثر باشد، استفاده از یک زیر 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
);

    
رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!