שלח תשובה

זירת השאלות

357
צפיות
6
תשובות

האם ייתכן שבMYSQL מבוטלת אפשרות

,‏ 24 בספטמבר, 2005

האם ייתכן שב – MYSQL מבוטלת אפשרות של עדכון ומחיקה קסקדיים?

הפעלתי אצלי במחשב מספר שאילתות ויצרתי טבלאות.
אצלי במחשב הכל עובד כשורה: 2 טבלאות ובינהן תלות יחיד-רבים ועובדת אפשרות של מחיקה ועדכון קסקדיים.
כאשר אני מפעיל את אותן השאילתות על שרת שבו בסופו של דבר יהיה האתר, אמנם נוצרות הטבלאות, אבל אין עדכון ומחיקה קסקדיים…

ברור לי שהשאילתות תקינות כי בדקתי במחשב שלי,
מה יכולה להיות הסיבה שזה לא עובד בשרת שבו האתר ?

תודה מראש

תגיות:

6 תשובות

  1. אוריקס הגיב:

    תגדיר "אין עדכון ומחיקה"
    אתה מקבל שגיאה כלשהי או שזה פשוט לא פועל?

  2. ramiyam הגיב:

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

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

    דוגמה לשאילתה:


    CREATE TABLE `question` (
                      `question_num` INTEGER UNSIGNED NOT NULL
                       AUTO_INCREMENT,
                      `question_name` VARCHAR(45) NOT NULL,
                      `level` VARCHAR(1) NOT NULL,
                      `picture` BLOB NOT NULL,
                      `size` INTEGER UNSIGNED NOT NULL,
                      `test_num` INTEGER UNSIGNED NOT NULL,
                      PRIMARY KEY(`question_num`),
                      CONSTRAINT `FK_test_num` FOREIGN KEY
                       `FK_test_num` (`test_num`)
                        REFERENCES `test` (`test_num`)
                        ON DELETE CASCADE
                        ON UPDATE CASCADE
                     )

  3. ramiyam הגיב:

    "אין עדכון ומחיקה"
    "אין עדכון ומחיקה"- קסקדיים,

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

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

  4. ramiyam הגיב:

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

    וזה מאוד לא רצוי כי במקה זה יכול להווצר מצב של חוסר אמינות של הנתונים.

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

    במחיקה קסקדית במקרה של תקלה לא ימחק כלום – מאף טבלה (זה "הכל או כלום")
    וכך נוכל שוב להריץ את השאילתה

  5. זהר פלד הגיב:

    טאנזאקציה פשוטה תפתור את זה.
    לגבי השאלה עצמה – אפפעם לא יצא לי לעבוד עם mySql, ככה שאין לי מושג במה הוא תומך ובמה לא.

שלח תשובה