mySQL מניעת חלק מהערכים כפולים
-
נניח יש לי טור מזהה לקוח וטור סוג מכירה.
כל לקוח יכול להוסיף כמה מכירות שהוא רוצה אבל רק מסוג "מכירה" או "חלוקה".
ישנו סוג נוסף בשם "מכירה מיוחדת" שלכל לקוח יש אפשרות של מכירה מיוחדת אחת בלבד.
האם יש אפשרות לעשות Unique על שתי העמודות, אבל להגדיר שרק לערך מסויים הוא לא יאפשר כפילות?
דוגמא להמחשה
-
@חוקר אם הבנתי אותך זה אולי הפתרון
-
@חוקר אם הבנתי אותך זה אולי הפתרון
@יוסף-בן-שמעון לא, לא הבנת אותו.
הלינק שלך מדבר על אילוץ יחידני על פני כמה עמודות, ואילו הוא רוצה שיהיה שרק אם יש בעמודה X ערך Y אז יהיה אילוץ כפילות על פני שתי עמודות.אני מצאתי פה משהו כזה
https://dba.stackexchange.com/q/167544/52552
הפתרון המוצע שם להבנתי משתמש בטריק של עמודה מחושבת. בעמודה המחושבת קובעים ערך בהתאם לסוג:ALTER TABLE `the_TABLE` ADD [COLUMN] `trick` AS (CASE WHEN `SUG` = 'מכירה מיוחדת' THEN `SUG` ELSE `ID` END) VIRTUAL ADD CONSTRAINT cc UNIQUE (`לקוח`, `trick`)
-
@יוסף-בן-שמעון לא, לא הבנת אותו.
הלינק שלך מדבר על אילוץ יחידני על פני כמה עמודות, ואילו הוא רוצה שיהיה שרק אם יש בעמודה X ערך Y אז יהיה אילוץ כפילות על פני שתי עמודות.אני מצאתי פה משהו כזה
https://dba.stackexchange.com/q/167544/52552
הפתרון המוצע שם להבנתי משתמש בטריק של עמודה מחושבת. בעמודה המחושבת קובעים ערך בהתאם לסוג:ALTER TABLE `the_TABLE` ADD [COLUMN] `trick` AS (CASE WHEN `SUG` = 'מכירה מיוחדת' THEN `SUG` ELSE `ID` END) VIRTUAL ADD CONSTRAINT cc UNIQUE (`לקוח`, `trick`)
-
@dovid
תודה
דורש עיון איך ליישם אותו (בפריימורק אני לא נוגע בשאילתת העדכון, ולא כ"כ הבנתי איפה מיישופ מה שהבאת), מקוה בהמשך לחזור לזה, בינתיים אני מזהיר את הלקוח עצמו.., שעון החול שלי לסיום הפרוייקט הנוכחי הוא קצר.. -
@חוקר בדיוק איפה שהיית מיישם UNIQUE רגיל.
ואתה צריך שרת פיתוח למשחקים, ואל תעשה את זה באמזון כי זה יקר.@dovid אמר בmySQL מניעת חלק מהערכים כפולים:
ואתה צריך שרת פיתוח למשחקים, ואל תעשה את זה באמזון כי זה יקר.
חשבתי באמת גם לגבי השדרוג של mysql לבצע תמונת מערכת וליצור העתק לשרת נוסף, ושם לנסות את השדרוג, כשאחזור להתמודד בסוגיית הפילוחים שם אבדוק מה לעשות, האם להתמודד בשאילתאות או אכן לשדרג (מאוד מפחיד בזמן הקצר שיש לי)
-
@חוקר בדיוק איפה שהיית מיישם UNIQUE רגיל.
ואתה צריך שרת פיתוח למשחקים, ואל תעשה את זה באמזון כי זה יקר. -
@dovid אמר בmySQL מניעת חלק מהערכים כפולים:
ואתה צריך שרת פיתוח למשחקים, ואל תעשה את זה באמזון כי זה יקר.
איפה כן?
פוסט זה נמחק! -
@dovid אמר בmySQL מניעת חלק מהערכים כפולים:
ואתה צריך שרת פיתוח למשחקים, ואל תעשה את זה באמזון כי זה יקר.
איפה כן?
-
@חוקר בענן של גוגל יש מכונה קטנה (
f1-micro
- פרטי המכונה) בחינם לתמיד.
מקור
אולי זה יספיק לך עבור ארגז חול -
@dovid אמר בmySQL מניעת חלק מהערכים כפולים:
ואתה צריך שרת פיתוח למשחקים, ואל תעשה את זה באמזון כי זה יקר.
חשבתי באמת גם לגבי השדרוג של mysql לבצע תמונת מערכת וליצור העתק לשרת נוסף, ושם לנסות את השדרוג, כשאחזור להתמודד בסוגיית הפילוחים שם אבדוק מה לעשות, האם להתמודד בשאילתאות או אכן לשדרג (מאוד מפחיד בזמן הקצר שיש לי)