Persistant value in Mssql ?

  • פותח הנושא rnan
  • פורסם בתאריך

rnan

New member
Persistant value in Mssql ?

יש לי עמודה שנקראת X והיא INT

ויש לידה עמודה Y שהיא CALCULATED עם PERSISTENT והנוסחא היא X+1.

כשאני שם ערך 3 נגיד אז Y מקבלת 4. סבבה.

עכשיו למה כשאני עורך אותה ל 7 היא מקבלת שוב 8 ?

אמרנו PERSISTENT לא ?

ראיתי דוגמאות של DATETIME ששם זה על פי GETDATE ושם זה כן נשמר או משהוא כזה

אפשר הסבר ?
 

pitoach

New member
אני לא בטוח שהבנתי את המצב אבל אם תצרף לנו

DDL+DML+ דוגמה מעשית של שינוי ומה היית רוצה שיתקבל נוכל להבין הכל במאה אחוז

אם אני מבין בכל זאת משהו מההסבר אז מה שאתה מתאר זו בדיוק ההתנהגות של עמודה מחושבת. אם אתה משנה את הערך מקור אז הערך המחושב משתנה בהתאם. נראה לי שלא הבנתי בדיוק מה המצב ולכן שוב אני ממליץ לצרף DDL+DML

http://ariely.info/Blog/tabid/83/En...e-DDL-and-Data-Manipulation-Language-DML.aspx
 

rnan

New member
מממממ

רציתי לדאול האם PERSISTANT זה קבוע לתמיד ?

כי אני רואה שלא

אם אני שם ב X ערך 1
אז אני רואהב Y 2

סבבה

עכשיו אם אני עורך את X ל 5 אז אני רואה ב Y את 6

לפי קריאתי בנושא הבנתי שה PERSISTANCE זה לגבי פונקציות דינמיות שמתעסקות עם תאריכים וכו

זה לא אמור לשמור את הערך לתמיד ?

אני אקצר : אני רואה שהערך המחושב משתנה !!אז איפה ה PERSISTANT כאן ?
 

גרי רשף

New member
יש להבדיל בין שני דברים שונים

1. עמודה מחושבת: זה מה שתיארת עם X+1. העמודה אינה מכילה ערכים אלא רק מציגה חישוב, ולכן לא ניתן לשנות את הערך שמופיע שם.

2. ערך ברירת מחדל: לעמודה יש ערך למקרה שמוסיפים שורה חדשה ולא מציינים מה ערך העמודה. זה מה שתיארת עם GetDate: כך ניתן לתעד מתי העמודה נוצרה. קובעים ש-GetDate יהיה ערך ברירת המחדל ובכל פעם שנוסיף שורה חדשה הערך של אותה עמודה יהיה השעה בה נוצרה השורה (אלא אם כן שינו את הערך או הכניסו ערך אחר).
 

rnan

New member
מממ

אני יודע מה זה DEFAULT VAL

שאלתי לגבי PERSISTANT VALUE IN CALCULATED COLUMN
 

rnan

New member
והבעיה שזה כן משנה לי את הערך

כלומר אם העמודה X היא 2 אז Y מראה 3

אבל אם מחר אני בא ומשנה את X ל 6 אז Y מראה לי 7

הוא לא אמור לשמור את התוצאה ב PERSISTANT ?
 

גרי רשף

New member
נכון- תמיד יוצג שם החישוב

ניתן לשנות את X ואז Y משתנה בעקיפין.
לא ניתן לשנות את Y ישירות.
 

rnan

New member
גרי

אני יודע שזה משתנה בעקפין
אז מה ההבדך בין PERSISTANT ללא PERSISTANT ?
 

גרי רשף

New member
אינני מכיר כנראה..

מכיר עמודה מחושבת שלא ניתן לשנותה,
וברירת מחדל שכן ניתן לשנותה.

לדעתך יש עמודה מחושבת שכן ניתן לשנות?
 

rnan

New member
חחח

לא... הכונה שלי זה שהיא תמיד מחושבת מחדש

הבאתי את זה בדוגמא

תמיד שאני משנה את X אז Y משתנה אוטומטית

וחשבתי שאם אני שם PERSISTNT אז Y לא תשתנה !

הובנתי לא נכון
 

pitoach

New member
העמודה המחושבת תמיד תלויה בעמודה הקבועה

היא רק חישוב דינאמי on the fly כמעט של הערך שיש בעמודה הקבועה ולכן היא תשתנה אם העמודה הקבועה תשתנה (כמו שרשם גרי)

אני מניח שהמושג PERSISTNT לקחת בפיתוח. בדוט נט יש מושג כזה אבל לא ב SQL בצורה ישירה לגבי עמודה מחושבת לזכרוני.

לכן הצעתי כמו תמיד לצרף לנו DDL+DML ואז היינו רואים בדיוק מה הגדרת ואיזה טבלה יש לך
ה DDL ילמד אותנו כיצד ייצרת את הטבלה וכיצד מוגדרת העמודה המחושבת וזה יקל להבין מה התכוונת

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

rnan

New member
פשששששש

התייאשתי לא משנה תודה

כולה שאלתי איפה הקטע של ה PERSISTANCE
PERSISTANCE = קבוע

איפה הקביעות כאן.
זה השאלה
נראה לי שהשאלה חוזרת כאן 3 פעמים
לא צריך לזה לא DDL ולא DML

לא משנה

תודה על התשובות.
 

גרי רשף

New member
חידשת לי


מעיון ראשוני אני מבין שיש אופציה ליצור עמודה מחושבת שהיא Persisted,
ואזי הנתונים נשמרים כמו במקרה של Default Value,
אך גם מתעדכנים כשהעמודות בהן העמודה המחושבת תלויה- מתעדכנות.

אבדוק זאת יותר לעומק.
 
למעלה