آموزش DUPLICATE KEY UPDATE در Mysql

  • خانه
  • آموزش DUPLICATE KEY UPDATE در Mysql
Image تحقیقات

آموزش DUPLICATE KEY UPDATE در Mysql

سلام دوستان عزیز

در این مقاله می خواهم به شما نشان بدهم چگونه در Mysql از قابلیت INSERT ON DUPLICATE KEY UPDATE استفاده کنید .این قابلیت به شما این امکان را می دهد, اگر رکورد جدیدی که ثبت می کنید تکراری باشد , به جای خطا, مقادیر را با مقادیر قبلی جایگزین کنید . فرض کنید شما یه جدول دارین شامل فیلدهای Id و Name . در این جدول رکورد ID=3 و Name=ali را درج کرده اید .. حالا دوباره رکورد Id=3 و Name=reza را درج می کنید .به دلیل اینکه فیلد ID کلید اصلی است و نمی تواند تکراری باشد قاعدتا به شما ارور می دهد  و می گوید فیلد id=3 قبلا درج شده است و نمی تواند تکراری باشد .

وقتی شما از  قابلیت INSERT ON DUPLICATE KEY UPDATE استفاده کنید , هنگامی که رکوردی تکراری درج کنید به جای اینکه به شما ارور تکراری بودن بدهد, مقادیر جدید را با مقادیر قبلی جایگزین می کند.

پس این قابلیت : رکورد جدید را تا جایی که تکراری نباشد ثبت می کند و اگر تکراری بود آن را آپدیت می کند .

سینتکس INSERT ON DUPLICATE KEY UPDATE همانند زیر است :‌

INSERT INTO table(column_list)
VALUES(value_list)
ON DUPLICATE KEY UPDATE column_1 = new_value_1, column_2 = new_value_2, …;

همانطور که مشاهده می کنید تنها چیزی که با دستور INSERT تفاوت دارد ON DUPLICATE KEY UPDATE است که به آن اضافه شده است .

مثال :

INSERT INTO sample_table(column_1)
VALUES(column_1)
ON DUPLICATE KEY UPDATE column_1 = VALUES(column_1) + 1;

در این مثال  مقدار column_1  در جدول sample_table افزوده می شود و اگر مقدار آن تکراری بود (فیلد column_1 یا UNIQUE یا  PRIMARY KEY بود ) , مقدار  VALUES(column_1) + 1 را با مقدار قبلی جایگزین می کند .

حالا یه مثال بهتر بزنم که کامل متوجه داستان بشین :‌

فرض کنید یه جدول داریم به نام devices که  network devices ها را ذخیره نماییم  :

CREATE TABLE devices (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100)
);

حالا داخل جدول devices رکوردی را اضافه می کنیم :‌

INSERT INTO devices(name)
VALUES('Router F1'),('Switch 1'),('Switch 2');

با استفاده از کوئری SELECT داده ها را نمایش می دهیم :‌

SELECT 
    id, name
FROM 
    devices;

 

آموزش DUPLICATE KEY UPDATE در Mysql

آموزش DUPLICATE KEY UPDATE در Mysql

همانطور که مشاهده می کنید در حال حاضر ۳ رکورد در این جدول وجود دارد .

حالا با استفاده از دستور زیر یک رکورد دیگر اضافه می نماییم :‌

INSERT INTO devices(name) VALUES ('Printer') 
ON DUPLICATE KEY UPDATE name = 'Printer';

 

آموزش DUPLICATE KEY UPDATE در Mysql

آموزش DUPLICATE KEY UPDATE در Mysql

این رکورد نیز با موفقیت اضافه شد و مشکلی نیست  چون رکورد تکراری نبود .

حالا با استفاده از دستور زیر , یک رکورد تکراری به جدول اضافه می کنیم تا ببینیم چه اتفاقی می افتد :‌

INSERT INTO devices(id,name) VALUES (4,'Printer') 
ON DUPLICATE KEY UPDATE name = 'Server';

در کد بالا با استفاده از ON DUPLICATE KEY UPDATE name = ‘Server’ گفتیم که اگر رکورد تکراری بود مقدار آن را با server آپدیت کن . به همین دلیل مقدار Printer با Server جایگزین می شود :‌

آموزش DUPLICATE KEY UPDATE در Mysql

آموزش DUPLICATE KEY UPDATE در Mysql

به پایان رسید . امیدوارم با مفهوم ON DUPLICATE KEY UPDATE در Mysql آشنا شده باشین و به وقتش در پروژه ها ازش استفاده کنید .

خب مقاله امروز هم به پایان رسید.خوشحال میشم مثل همیشه نظراتتون رو اعلام کنید.