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`)
-
@dovid אמר בmySQL מניעת חלק מהערכים כפולים:
ואתה צריך שרת פיתוח למשחקים, ואל תעשה את זה באמזון כי זה יקר.
חשבתי באמת גם לגבי השדרוג של mysql לבצע תמונת מערכת וליצור העתק לשרת נוסף, ושם לנסות את השדרוג, כשאחזור להתמודד בסוגיית הפילוחים שם אבדוק מה לעשות, האם להתמודד בשאילתאות או אכן לשדרג (מאוד מפחיד בזמן הקצר שיש לי)
-
פוסט זה נמחק!