פורסם 2009 באפריל 1416 שנים עד עכשיו עבדתי עם DB אחרים וזה פעם ריאשונה שאני עובד עם MYSQL ואני עדין בשלבי למידה שלו.אני משתשמש ב MYSQL 5.1.33 עם מנוע INNODB גירסה 1 שמובנת ב DB.אז מהר מאד הבנתי שמשום מה ברירת המחדל שלו הוא AUTO COMMITוצריך להשתמש ב SET AUTOCOMMIT = 0 בכדי לכתוב טרנזקציות.אחרי שהבנתי את זה רציתי לעשות שימוש ב SELECT FOR UPDATE בכדי לנעול שורה בטרנזקציה אחתכדי שהיא לא תפגע בטרנזקציה אחרת שרצה במקביל.דוגמא:טרנזקציה 1: SET AUTOCOMMIT = 0SELECT * FROM X WERE Y=Z FOR UPDATE(בשלב הזה הרשומה צריכה להיות נעולה)טרנזקציה 2:SET AUTOCOMMIT = 0SELECT * FROM X WERE Y=Zלמרות שהשורה אמורה להיות נעולה אני מקבל תוצאה.הנעילה עבדה רק כאשר הוספתי 'FOR UPDATE' גם לשאילתא של הטרנזקציה השניהוגם אז הנעילה היתה על כל הטבלה ולא רק על השורהזאת התנהגות מאד מוזרה של ה DB , משהוא פה יכול להסביר לי למה הוא מתנהג ככה.התחושה שלי שזה קשור במנוע INNODB אבל באמת אין מושג מה קורה פה ולמה הוא לא מתנהג כמו כל DB נורמלי
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.