› פורומים › אפיון ופיתוח פריוריטי › SET TRANSACTION
- This topic has 5 תגובות, 2 משתתפים, and was last updated לפני 7 שנים, 10 חודשים by yitzchok.
- Post
-
- ינואר 17, 2017 בשעה 2:02 pm
מה המשמעות של הפקודה SET TRANSACTION בפריורטי?יש לי במערכת פקודת UPDATE ואחריה SET TRANSACTION
בדקתי את ערך השדה בטבלה לפני ה UPDATE, היה בו X
אחרי ה UPDATE היה בו Y (בהתאם ל UPDATE)
אחרי ה SET TRANSACTION היה שוב Xלמה?
תודה מראש
מוצגות 5 תגובות – 1 עד 5 (מתוך 5 סה״כ)
- Replies
-
- ינואר 17, 2017 בשעה 2:08 pm
פעם ביררתי זאת דרך חברה מיישמת ואמרו שאין משמעות לפקודה הזו. דווקא לפי הדוגמא שלך יש. אם באמת יש טרנסקציות בפריוריטי אז צריך להשתמש בפקודה COMMIT כדי לסגור את הטרנסקציה.SET TRANSACTION נדרש בדרך כלל כאשר צריך לבצע כמה עדכונים ביחד (בעיקר בהנה"ח) כאשר אסור שאחד יתבצע והשני לא. הטרנסקציה דואגת לכך שאו שהכל יתבצע או שכלום לא יתבצע.
הפקודה צריכה להיות *לפני* UPDATE ולא אחרי. האם מדובר בקוד סטנדרטי?
- ינואר 17, 2017 בשעה 2:13 pm
מדובר בקוד פרטי
ראיתי גם בקוד סטנדרטי שימוש ב SET TRANSACTION ללא COMMIT
בדוגמא הסטנדרטית יש INTERFACE ואחריו
SET TRANSACTION; /* INTERFACE called sql_commit_all(),ה SET TRANSACTION אמור לתחום את הקוד מתחת עד ה COMMIT? כי גם בסטנדרט זה לא ממש נראה ככה.
מה זה יכול להיות? למה זה מגלגל לי את המצב אחורנית?
- ינואר 17, 2017 בשעה 2:18 pm
- ינואר 18, 2017 בשעה 9:55 am
אם למשהו יש תובנות נוספות בנושא אשמח לשמוע.
אני מנסה להבין למה הפקודה מבטלת את פעולת ה UPDATE שלפניה
תודה- ינואר 18, 2017 בשעה 11:43 am
אולי אולי אולי יישום ה set transaction של פריוריטי ברמת התרגום ל-sql של הדטהבייס כולל rollback של כל טרנסקציה שפתוחה?בדרך לבדוק זה בעזרת profiler או כלי דומה ברמת הדטהבייס. יכול להיות שהרצת הקוד שלך במצב דיבוג יגלה משהו אבל אני לא משוכנע בכלל.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
מוצגות 5 תגובות – 1 עד 5 (מתוך 5 סה״כ)
- יש להתחבר למערכת על מנת להגיב.