fbpx

Sequence הוא אובייקט אשר מאפשר לנו ליצור מספרים בצורה סדרתית כלשהי (Autonumber).
כאשר אנו מכניסים נתונים לתוך טבלאות, נרצה כי הערכים במפתח הראשי של העמודה יכנסו בצורה רציפה ע"י תהליך אוטומטי כלשהו, משום שסביר להניח כי במידה וערכים אלו יוכנסו בצורה ידנית לא תהיה סדרתיות רציפה.


לדוגמא, במקרה של טבלת מוצרים, קיימים אנשים שונים בארגון אשר יכולים להכניס מוצרים חדשים לתוך טבלה זו. אנו רוצים להבטיח מצב שבו לא יתכן כי עובד אחד יכניס
מוצר A תחת מספר 5, עובד אחר יכניס מוצר B תחת מספר 302, וכן הלאה.
Sequence מוגדר בצורה נפרדת ועצמאית מהטבלה עצמה, כך שמספר טבלאות יכולות להשתמש באותו 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- לסדר יורד.

clip_image001clip_image002לא חובה לציין

 

    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’)

 

שינוי Sequence

ALTER SEQUENCE שם
[ INCREMENT BY  n ]
[MAXVALUE n | NOMAXVALUE ]
[ MINVALUE n | NOMINVALUE ]
[CYCLE | NOCYCLE ]
[CACHE n | NOCACHE] 

v     שינוי Sequence תקף רק לשינויים עתידיים.

v     הדרך היחידה לאתחל Sequence היא למחוק אותו (Drop) וליצור מחדש.

 

מחיקת Sequence

DROP SEQUENCE שם

לדוגמא :

DROP SEQUENCE emp_seq