
Email, כי היא משמשת לעיתים כשם משתמש. בדיזיינר פותחים Indexes and Keys, לוחצים Add, מגדירים Is Unique כ-Yes ובוחרים את עמודת Email. בהתחלה הוגדר בטעות על ID, ולכן הכפילות עדיין עברה.Hours מסוג tinyint מאפשרת 150 או 230 שעות. נכנסים ל-Manage Check Constraints, מוסיפים אילוץ ובשדה Expression כותבים שהערך גדול או שווה ל-0 וקטן או שווה ל-100. הכנסת 230 נכשלת, ו-30 עוברת.הטקסט המלא של הדקות הראשונות בהרצאה «אילוצים ב-SQL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הנושא הבא שאנחנו הולכים לראות נקרא אילוצים. קונסטרנטס. מה זה אילוצים? אילוץ זה בעצם כלל או תנאי שאנחנו מגדירים על עמודה או על סדרת עמודות בטבלה.
ומה שהוא עושה, הוא פשוט בודק שהמידע הוא תקין, שהוא אמין, שהוא נכון, ולא מאפשר לנו להכניס מידע שגוי. האילוץ הראשון הוא פריימריקי.
זה בעצם, כמו שראינו, עמודה שמוגדרת כערכים ייחודיים אי אפשר להכניס בנאלים אפילו לא פעם אחת וכל ערך התפקיד שלו זה לייצג באופן חד חד ערכי את הרשומה שלו וכמובן ערך לא יכול לחזור פעמיים באותה רשומה בואו נסתכל ניזכר רק איך עשינו את זה היה לנו לדוגמה קורסים אם אני הולך לדיזיין
היה לנו פה מכה שימני על עמודה והגדרנו פריימרי קי, פה היה סט. האילוץ הבא זה Foreign Key, זה גם כן נחשב כאילוץ וזה בעצם עמודה שמקושרת לעמודה אחרת שלרוב היא פריימרי קי והוא אומר אני בודק שהמידע שהכנסתם אליי נמצא בצד השני של הקשר,
היא בודקת את זה בזמן שאני מוסיף מידע, בזמן שאני מעדכן מידע ואם אני מוחק את הפריימרי אז היא אומרת, רגע, רגע, אתה לא יכול למחוק אותי כי עדיין קיים המידע הזה ב-Foreign Key, היא עושה את כל הבדיקות האלה, בואו ניזכר אם הגדרנו את הדיאגרמה ואנחנו בעצם מותחים מנקודה אחת לנקודה אחרת, Relation,
זה בעצם יוצר בצד השני את ה-Foreign Key שלנו. אנחנו יכולים לראות לדוגמה פה Foreign Key, זה שרואים את הסימן של האינסוף, זה יהיה ה-Foreign Key מול Primary Key במקרה הזה.
הבא בתור זה non-null constraint. זה בעצם אותו אילוץ שראינו שהגדרנו שאומר אסור להכניס נאלים לערך. במילים אחרות, חובה לספק value. זה נמצא בעמודה הזאת.
כאשר אנחנו מגדירים איזה עמודה, פה אנחנו יכולים להגדיר אם מותר או אסור להכניס נאל. זה בעצם האילוץ. שלושת אלה ראינו. מה לא באמת ראינו?
דיפולט קונסטריינט, זה בעצם מספק ערך דיפולטי אם אנחנו לא מספקים value. האילוץ הבא בתור נקרא יוניק קונסטריינט, זה אומר דבר כזה, אני עמודה, אני לא מפתח ראשי, אבל עדיין כל ערך חייב להיות אצלי ייחודי ומוגדר פעם אחת,
בלי שאני אהיה מפתח ראשי. מפתח ראשי הוא אוטומטית יוניק. יוניק הוא לא מפתח ראשי, התפקיד שלו זה לא לזהות באופן חד חד ערכי את הרשומה אבל הוא לא מאשר להכניס כפילויות.
הוא כן מאשר להכניס נעל רק פעם אחת בלבד. בואו נלך לסטודנטים ונגיד אין בעיה סטודנט הביא לי אימייל לא יהיה הגיוני ששתי סטודנטים יהיה להם את אותו האימייל.
יכול להיות שהאימייל גם מהווה יוזרניים שאיתו נכנסים אני לא רוצה יוזרניים פעמיים אז בואו רגע נוריד את העלאון נעל לא נאפשר להכניס תלמיד חדש בלי אימייל כי מבחינתי הוא חייב להיות יוניקי והוא ה-user name נניח של התלמיד.
הרבה פעמים אימייל מהווה user name, כניסה. ואני רוצה לעשות אותו יוניק. אז אנחנו הולכים ל-indexes and keys, זה הנקודה הזאת פה. ואומרים לו, תשמע, אנחנו רוצים להוסיף כרגע עוד אילוץ, בואו נוסיף add, הנה הוא, אבל זה לא מפתח ראשי, אנחנו הולכים ל-easyunique ואומרים לו yes אתה אילוץ שמתאר
uniqueness type unique בואו נבצע close ובואו נשמור. עכשיו הגדרנו על האימייל ערך יוניקי בואו נחזור לטבלת הסטודנטים תציג לי את המידע נוסיף סטודנט חדש ואני מוסיף מרג' סימפסון והיא למעשה משתמשת באימייל של בארט כי אין לה אימייל משלה או שיש לה והיא אוהבת
להשתמש עם האימייל של בארט אז היא פשוט נתנה את בארט את gmail.com היא גרה בוא נגיד גם בתל אביב enter אנחנו רואים שהוא נתן לנו לעשות את זה כאשר הוא לא היה אמור לתת לנו לעשות את זה מה לא עשיתי בסדר בואו נלך שוב פעם פה לאילוצים.
אוי אוי אוי, הנה השגיאה. זה מוגדר לי על ה-students.id, זה מה ששכחתי, לא קרה כלום. אני רוצה להגדיר את זה על האימייל. בואו נעשה Close, נשמור.
עכשיו הוא כמובן לא ייתן לי בגלל שזה חורג. טוב, בואו נמחק את זה. Delete, ביי. נחזור בחזרה, ננסה לשמור. והוא נתן לי לשמור עכשיו הקשר הזה, האילוץ הזה מוגדר כמו שצריך, היה חסר לי רק להגדיר שזה על האימייל כמובן, ומנסה שוב פעם להוסיף את מרג' סימפסון, ועם אימייל [email protected], היא גרה בתל אביב,
Enter, יופי, זה מה שרציתי לקבל. רציתי לקבל את השגיאה הזאת, הוא אומר לי violation of unique key cannot insert duplicate key object, הוא אומר לי גם, ניסיתי להכניס בארט, הוא כבר קיים, אוקיי, אתה לא יכול לעשות את זה ואז כמובן שהאפליקציה תחטוף קריסה ותצטרך לטפל בזה.
ולהגיד, שמע, אסור, יש כבר אימייל כזה. מישהו נרשם עם איזשהו אימייל או יוזרניים שהוא לאו דווקא אימייל והוא בחר כבר יוזרניים שמישהו אחר בחר.
כמובן שאתם מקבלים שגיאות וזה מה שמאיר את השגיאה הזאת. אז מרג' תגיד, אה, נכון, בארד כבר הכניס את האימייל שלו, סליחה, סליחה, אני אתן את האימייל