דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. הימנעות מלולאה אינסופית בטריגרים my sql

הימנעות מלולאה אינסופית בטריגרים my sql

מתוזמן נעוץ נעול הועבר ארכיון code613m
8 פוסטים 3 כותבים 509 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    ארכיטקט
    כתב ב נערך לאחרונה על ידי
    #1

    שלום לכולם
    ל SQL SERVER יש מנגנון שיודע לזהות האם עדכון בטבלה הגיע מטריגר של עצמו או מבקשה חיצונית, וזאת על מנת למנוע מצב של לולאה אינסופית כאשר הטריגר מעדכן את אותה הטבלה שעליה הוא חל, וכמו שאומרים הלמדנים על בסיס דברי הרמב"ן המגרש את אשתו על מנת שלא תתקדשי לפלוני שכל דבר שאם הוא יחול הוא לא יחול אז הוא לא חל :lol: :lol: :lol: , אז בישיבה יש שחושבים שזה איזה כוח מאגי שמונע מדברים לחול (לא שאני חושב ככה חלילה :lol: :lol: :lol: ), אבל מייקרוסופט כנראה עושים את זה קצת יותר פשוט (עריכה: לדעתי משתנה גלובלי שמתעדכן שהטרנזקציה של עכשיו היא באמצעות טריגר וכל טריגר מותנה בכך שהטרנזקציה אינה נכללת ברשימה השחורה), בכל אופן אני מבין ש mysql לא השכילו לפתור את הענין, וזה די מגביל, האם למישהו יש רעיון שיכול לעזור.
    הצורך שלי הוא פשוט לעדכן טבלה תוך כדי טריגר, בלי שעל העדכון הזה עצמו יחול טריגר. המקרה: עמודה של order_by שהמשתמש יכול לעדכן ולדחוף רשומות אחורה או קדימה בתור, מה שאני רוצה זה שהטריגר ידחף את כל המספרים קדימה ואחורה בהתאמה כאשר מעלים או מורידים מספר ברשומה כלשהי.
    תודה.

    פורסם במקור בפורום CODE613 ב26/05/2014 13:53 (+03:00)

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

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      עושים פשוט את מה שהצעת: מגדירים משתנה גלובלי, וברגע הפעלת הטריגר "מסמנים" אותו.
      ראה כאן:
      http://stackoverflow.com/a/9570455/1271037
      http://illya-keeplearning.blogspot.co.il/2009/03/disable-triggers-in-mysql-50.html
      http://stackoverflow.com/a/3577992/1271037

      אני מציע בכלל לא להשתמש בטריגר, אלא להשתמש לשם המיון בשדה דצימלי/שלם גדול וכל פעם שבן אדם רוצה למקם פריט, אתה מוצא מס' פנוי אחרי הפריט שלפני שקטן מהפריט שאחרי. לדוגמה:
      1
      2
      3

      ואתה רוצה למקם את 3 אחרי 1, אז אתה משנה אותו ל1.0001:
      1
      1.001
      2

      ומידי יומיים להריץ פרוצדורה מאוחסנת שמסדרת את העניינים וממספרת רגיל, כדי שחלון האפשרויות לא ייגמר (1.999999999999992 😉 ).

      פורסם במקור בפורום CODE613 ב26/05/2014 17:56 (+03:00)

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      1
      • clickoneC מנותק
        clickoneC מנותק
        clickone
        כתב ב נערך לאחרונה על ידי
        #3

        השאלה אם משתנה גלובלי לא יגרום למשהו הפוך: ששאילתא שרצה "מבחוץ" לא תריץ טריגר אם זה יהיה תהליך מקביל.

        פורסם במקור בפורום CODE613 ב26/05/2014 20:31 (+03:00)

        אין טסט כמו פרודקשן.

        המייל שלי urivpn@gmail.com

        תגובה 1 תגובה אחרונה
        0
        • א מנותק
          א מנותק
          ארכיטקט
          כתב ב נערך לאחרונה על ידי
          #4

          @ClickOne

          השאלה אם משתנה גלובלי לא יגרום למשהו הפוך: ששאילתא שרצה "מבחוץ" לא תריץ טריגר אם זה יהיה תהליך מקביל.

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

          פורסם במקור בפורום CODE613 ב27/05/2014 03:03 (+03:00)

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

          תגובה 1 תגובה אחרונה
          1
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            כתב ב נערך לאחרונה על ידי
            #5

            @ארכיטקט

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

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

            פורסם במקור בפורום CODE613 ב27/05/2014 10:56 (+03:00)

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            0
            • א מנותק
              א מנותק
              ארכיטקט
              כתב ב נערך לאחרונה על ידי
              #6

              @דוד ל.ט.

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

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

              פורסם במקור בפורום CODE613 ב27/05/2014 13:18 (+03:00)

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

              תגובה 1 תגובה אחרונה
              0
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                כתב ב נערך לאחרונה על ידי
                #7

                @ארכיטקט

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

                מה הקושי? מה הכונה ידנית?
                אתה מציג לו טבלה, והוא בוחר שורה ויכול לעלות אותה ולהוריד אותה/ לקבוע לה מיקום אחרי שורה פלונית וכדומה, ואתה המתכנת קובע בהתאמה ערכים בעמודה שאתה ייעדת לכך שאיננה לעיני המשתמש הנכבד.

                הVIEW שלי אמור לעזור למקרה שאתה לא רוצה כלל קוד שיציג מספר מדומה בנתונים, אלא הDB בעצמו יחזיר מספרים אלגנטיים רציפים, לפי הסדר הלא אלגנטי של העמודה המסדרת.

                פורסם במקור בפורום CODE613 ב27/05/2014 15:09 (+03:00)

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                תגובה 1 תגובה אחרונה
                2
                • א מנותק
                  א מנותק
                  ארכיטקט
                  כתב ב נערך לאחרונה על ידי
                  #8

                  אוקי אני מעדיף לא לשבור את הראש עם ויזואליה מורכבת של גרירה והשלכה/כפתוריזציה, אבל בכל אופן עשיתי משהו בסיגנון שאמרת ואני עובד עם פרוצדורה מאוחסנת וחסל.

                  תודה.

                  פורסם במקור בפורום CODE613 ב27/05/2014 16:38 (+03:00)

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

                  תגובה 1 תגובה אחרונה
                  0

                  בא תתחבר לדף היומי!
                  • התחברות

                  • אין לך חשבון עדיין? הרשמה

                  • התחברו או הירשמו כדי לחפש.
                  • פוסט ראשון
                    פוסט אחרון
                  0
                  • דף הבית
                  • קטגוריות
                  • פוסטים אחרונים
                  • משתמשים
                  • חיפוש
                  • חוקי הפורום