INSERT ON DUPLICATE KEY UPDATE

לעתים נרצה להכניס לטבלה שורה אחת או יותר אולם במקרה והשורה כבר קיימת בטבלה, כלומר השורה שנרצה להכניס לטבלה תגרום לערך כפול בשדה שהוא Unique או בשדה שהוא PRIMARY KEY, אזי נרצה רק שנתוני השורה החדשים יתעדכנו. MySQL מאפשר לנו לעשות זאת באמצעות משפט INSERT....ON DUPLICATE KEY UPDATE

המבנה הכללי של משפט  INSERT ON DUPLICATE KEY UPDATE הוא:

INSERT INTO <רשימת עמודות בטבלת היעד> <שם טבלה>
VALUES (ערך3, ערך2, ערך1...)
ON DUPLICATE KEY UPDATE Values(n)

קוד לדוגמה

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

בדוגמה למעלה אם העמודה a מוגדרת כשדה unique המכיל את הערך 1 אזי משפט ה - INSERT שבדוגמה יהיה שקול למשפט הבא:

UPDATE table SET c=c+1 WHERE a=1;

ההסבר לכך הוא שכאשר משפט ה - INSERT שלנו נתקל בכפילות האסורה בעמודה a הוא משתנה והופך להיות בעצם למשפט UPDATE.

הערה חשובה: חשוב לזכור שסוג זה של משפטים תקף רק ב - MySQL ואילו בבסיסי נתונים אחרים נפתור בעיות מסוג זה באמצעים אחרים כגון משפט MERGE INTO ב - ORACLE וב - SQL SERVER.

 


 
© 2010-2013  www.Devschool.co.il | מדיניות פרטיות | תנאי שימוש