Sequence הוא אובייקט אשר מאפשר לנו ליצור מספרים בצורה סדרתית כלשהי (Autonumber).
כאשר אנו מכניסים נתונים לתוך טבלאות, נרצה כי הערכים במפתח הראשי של העמודה יכנסו בצורה רציפה ע"י תהליך אוטומטי כלשהו, משום שסביר להניח כי במידה וערכים אלו יוכנסו בצורה ידנית לא תהיה סדרתיות רציפה.
לדוגמא, במקרה של טבלת מוצרים, קיימים אנשים שונים בארגון אשר יכולים להכניס מוצרים חדשים לתוך טבלה זו. אנו רוצים להבטיח מצב שבו לא יתכן כי עובד אחד יכניס מוצר A תחת מספר 5, עובד אחר יכניס מוצר B תחת מספר 302, וכן הלאה.
Sequence מוגדר בצורה נפרדת ועצמאית מהטבלה עצמה, כך שמספר טבלאות יכולות להשתמש באותו Sequence.
CREATE SEQUENCE שם [ INCREMENT BY n ] [ START WITH n ] [MAXVALUE n | NOMAXVALUE ] [ MINVALUE n | NOMINVALUE ] [CYCLE | NOCYCLE ] [CACHE n | NOCACHE]
הסבר |
הערות |
הפעולה |
שם ה Sequence |
חובה לציין |
CREATE SEQUENCE שם |
מהו יהיה המרווח בין מספר למספר, באופן דיפולטיבי המרווח יהיה 1, ניתן להגדיר גם מספרים שליליים. |
לא חובה לציין |
INCREMENT BY n |
באיזה מספר Sequence יתחיל, באופן דיפולטיבי הוא יתחיל במספר 1. |
לא חובה לציין |
START WITH n |
מגדיר את המספר המקסימלי שאליו יגיע ה- Sequence. באופן דיפולטיבי ההגדרה תהיה NOMAXVLUE – משמעותה 27^10 לסדר עולה ו- 1- לסדר יורד. |
1- 27^10
26^10- 1 |
MAXVALUE n | NOMAXVALUE |
מגדיר את המספר המינימלי שאליו יגיע ה- Sequence. באופן דיפולטיבי ההגדרה תהיה NOMINVALUE – משמעותה 1 לסדר עולה ו- 26^10- לסדר יורד. |
MINVALUE n | NOMINVALUE |
|
האם ה-Sequence יכנס לסבב חדש לאחר שהגיע לסופו. באופן דיפולטיבי האופציה תהיה NOCYCLYE – משמעותה שברגע שנגיע למספר האחרון ה-Sequence לא יכנס לסבב נוסף. |
לא חובה לציין |
CYCLE | NOCYCLE |
האם ה-Database ישמור בזכרון שלו כמות מסויימת של מספרים השייכים ל- Sequence. באופן דיפולטיבי אורקל שומר 20 ערכים. |
לא חובה לציין |
CACHE n | NOCACHE |
פונקצייתNEXTVAL ופונקציית CURRVAL
לאחר שיצרנו Sequence, לדוגמא :
CREATE SEQUENCE emp_seq
כדי לבצע שליפת מספרים מה-Sequence, נשתמש בפונקציות NEXTVAL ו- CURRVAL.
NEXTVAL
פונצקיה לשליפת המספר הבא ברצף מתוך ה-Sequence (1,2,3,4,5…)
.NEXTVALשם_seq
לדוגמא :
Emp_seq.NEXTVAL
CURRVAL
פונקציה להצגת המספר האחרון אשר נשלף.
.CURRVALשם_seq
לדוגמא :
emp_seq.CURRVAL
דוגמא להכנסת שורות חדשות לטבלה ע" שימוש ב-Sequence ומשתני החלפה :
CREATE TABLE emp_copy (emp_id NUMBER(3), emp_name VARCHAR2(25)) INSERT INTO emp_copy VALUES (emp_seq.NEXTVAL , ‘&Employee_name’)
ALTER SEQUENCE שם [ INCREMENT BY n ] [MAXVALUE n | NOMAXVALUE ] [ MINVALUE n | NOMINVALUE ] [CYCLE | NOCYCLE ] [CACHE n | NOCACHE]
v שינוי Sequence תקף רק לשינויים עתידיים.
v הדרך היחידה לאתחל Sequence היא למחוק אותו (Drop) וליצור מחדש.
DROP SEQUENCE שם
לדוגמא :
DROP SEQUENCE emp_seq