שאלה על WHERE בתוך On Duplicate update

eyal7773

New member
שאלה על WHERE בתוך On Duplicate update

שלום,
אני משתמש ב-MySql
באפשרות של
insert....on duplicate key update....

ואני רוצה לשים תנאי אחד *בודד*
שבמידה ואינו מתקיים - אז ה-Update לא יקרה

עכשיו ב-Syntax של ה-Update הזה
1. אי אפשר להכניס WHERE
2. אפשר להכניס IF - אבל זה רק לכל שדה בנפרד
כמו שמראים כאן :http://thewebfellas.com/blog/2010/1/18/conditional-duplicate-key-updates-with-mysql

ואני רוצה תנאי על שדה אחד, שיקבע האם לעדכן או לא לעדכן את כל הרשומה.

אנא עזרתכם
 

pitoach

New member
ישנם כמה דרכים לביצוע בדיקה בזמן הכנסה של

נתון. צריך להבין מה המטרות ומה האפיון שלכם כדי להבין מה מתאים אבל הנה כמה אפשרויות שתוכל לחקור מה אולי מתאים לשימוש שאתם מחפשים (לא רשמת לנו כלום על האפיון או הצורך שלך מעבר לכך שאתה צריך שלא יהיה עדכון בזמן הכנסה של התון קיים)

1. שימוש ב ON DUPLICATE KEY UPDATE
כמו שהבנת לא מאפשר עבודה ישירה במקביל עם FILTER של WHERE. עם זה בהחלט אפשר לכתוב את אותו תנאי כמה פעמים בצורה ישירה או דינאמית.

2. שימוש ב REPLACE INTO במקום ב INSERT
REPLACE INTO זה משהו שקיים בשרתי MySQL והוא למעשה מבצע בדיקה אם הערך קיים. אם כן אז הוא מבצע עדכון ואם לא אז הוא מבצע הכנסה של ערך חדש (אין לזה מקביל מוחלט ב SQL Server אבל אפשר לממש את זה עם MERGE)

3. שימוש ב MERGE

4. שימוש בפקודות SHELL ויצירת סקריפט קטן בו אנחנו מבצעים INSERT ואת התוצאה מעבירים לפרמטר שלנו. אם היתה שגיאה אז הפרמטר יקבל את הערך המתאים ןאז מבצעים את הפעולה של עדכון אם אנחנו עומדים בתנאי

5. שימוש ב exists

6. שמוש ב IF שעוטף את כל הפעולה

* זה כרגע מה שקופץ לי לראש במהירות...
בטוח שיש עוד פתרונות בהתאם לאפיון
 
למעלה