בחלק זה, אנו הולכים להבין את העבודה של PostgreSQL סדרתי פסאודו-טיפוס, המאפשר לנו להגדיר עמודות הגדלה אוטומטית בטבלאות. וגם אנחנו רואים דוגמאות של ה PostgreSQL Serial Pseudo-type .
מהו PostgreSQL Serial Pseudo-type?
ב-PostgreSQL, יש לנו סוג אחד מסוים של מחולל אובייקטי מסד נתונים הידוע בשם סידורי , אשר רגילה ליצור רצף של מספרים שלמים המשמשים לעתים קרובות בתור א מפתח ראשי בטבלה.
ניתן ליצור את הרצף בעזרת ה- SERIAL פסאודו-סוג , בזמן שאנו יוצרים טבלה חדשה, כפי שאנו יכולים לראות בפקודה הבאה:
CREATE TABLE table_name( ID SERIAL );
ה-PostgreSQL עושה את הפעולות הבאות אם אנו מספקים את SERIAL פסאודו-סוג אל ה תְעוּדַת זֶהוּת טור:
- ראשית, PostgreSQL תיצור אובייקט רצף ולאחר מכן יקבע את הערך הבא שנוצר על ידי הרצף כערך המוגדר מראש של העמודה המסוימת.
- לאחר מכן, PostgreSQL ישפר את א אילוץ לא NULL אל ה עמודה מזהה מכיוון שרצף תמיד מייצר מספר שלם שהוא a ערך שאינו ריק .
- לבסוף, PostgreSQL תספק את הבעלים של הרצף ל- עמודה מזהה; כפלט, אובייקט הרצף מוסר כאשר הטבלה או עמודה מזהה ירד.
הערה: אנו יכולים להשתמש בשתי הפקודה כדי לציין את סוג הפסאודו הסדרתי מכיוון ששתי הפקודות שלהלן דומות זו לזו.
CREATE TABLE table_name( ID SERIAL );
CREATE SEQUENCE table_name_ID_seq; CREATE TABLE table_name ( ID integer NOT NULL DEFAULT nextval('table_name_ID_seq') ); ALTER SEQUENCE table_name_ID_seq OWNED BY table_name.ID;
ה PostgreSQL Serial Pseudo-type סווג לשלושה סוגים שהם כדלקמן:
יש לנו את הטבלה הבאה, המכילה את כל סוג פסאודו סדרתי מפרט שנתמך על ידי PostgreSQL:
שֵׁם | גודל אחסון | טווח |
---|---|---|
SMALLSERIAL | 2 בתים | 1 עד 32767 |
סידורי | 4 בתים | 1 עד 2147483647 |
BIGSERIAL | 8 בתים | 1 עד 9223372036854775807 |
תחביר של PostgreSQL Serial Pseudo-type
התחביר של PostgreSQL סוג פסאודו סדרתי כדלהלן:
variable_name SERIAL
דוגמאות לסוג PostgreSQL SERIAL
הבה נראה דוגמאות שונות כדי להבין כיצד סוג פסאודו סדרתי PostgreSQL עובד .
הערה: אנו יכולים להגדיר את האילוץ PRIMARY KEY עבור העמודה SERIAL מכיוון שהסוג SERIAL אינו יוצר בעקיפין אינדקס על העמודה או הופך את העמודה לעמודת המפתח הראשי.
אנו יוצרים טבלה חדשה אחת בעזרת הפקודה CREATE ומכניסים כמה ערכים באמצעות הפקודה INSERT .
שורה מול עמודה
בדוגמה למטה, אנו משתמשים ב- לִיצוֹר פקודה ליצירת א מכוניות שולחן לתוך מסד נתונים של הארגון:
CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL );
תְפוּקָה
ה מכוניות הטבלה נוצרה בהצלחה לאחר ביצוע הפקודות לעיל, כפי שמוצג בצילום המסך שלהלן:
פעם ה מכוניות נוצרה, נוכל להוסיף כמה ערכים לתוכה באמצעות הפקודה INSERT. ואנחנו יכולים להשתמש ב בְּרִירַת מֶחדָל מילת מפתח בפקודה INSERT או השמט את שם העמודה (מזהה_מכונית) .
INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera');
תְפוּקָה
לאחר יישום הפקודה לעיל, נקבל את ההודעה הבאה, והערך הוכנס בהצלחה ל- מכוניות שולחן:
בן כמה פיט דיווידסון
אוֹ משתמש ב מילת מפתח ברירת מחדל עם שם העמודה (מזהה_מכונית):
INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8');
תְפוּקָה
ביישום הפקודה לעיל, נקבל את ההודעה הבאה; הערך הוכנס בהצלחה ל- מכוניות שולחן:
כפי שאנו יכולים לראות בצילום המסך לעיל, ה-PostgreSQL הכניס שתי שורות ל- מכוניות שולחן עם ה מזהה_מכונית ערכי העמודות הם 1 ו-2 .
לאחר יצירת והכנסת ה מכוניות ערכי הטבלה, נשתמש ב- בחר הפקודה מחזירה את כל השורות של מכוניות שולחן:
אחרת אם bash
SELECT * FROM Cars;
תְפוּקָה
לאחר יישום מוצלח של הפקודה לעיל, נקבל את התוצאה הבאה:
אנחנו יכולים להשתמש ב pg_get_serial_sequence() פונקציה כדי לקבל את שם הרצף של a סידורי עמודה בטבלה מוגדרת כפי שאנו יכולים לראות בתחביר שלהלן:
pg_get_serial_sequence('table_name','column_name')
כדי לקבל את ערך נוכחי שנוצר על ידי הרצף, נוכל להעביר שם רצף לפונקציה currval() .
בדוגמה הבאה, השתמשנו ה-currval() פונקציה להחזרת הערך הנוכחי המופק על ידי ה מכוניות שולחן מכונית_מזהה_seq לְהִתְנַגֵד:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
תְפוּקָה
לאחר יישום הפקודה לעיל, נקבל את הפלט שלהלן:
אנחנו יכולים להשתמש ב RETURNING Car_id סעיף לתוך הפקודה INSERT אם ברצוננו לקבל את הערכים הללו שנוצרו על ידי הרצף כאשר אנו מכניסים שורה חדשה לטבלה.
הפקודה שלהלן משמשת להוספת שורה חדשה לתוך מכוניות טבלה ומחזירה את הרשומות הללו שנוצרו עבור מזהה_מכונית טור.
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
תְפוּקָה
בביצוע הפקודה לעיל, נקבל את הפלט הבא, אשר מחזיר את מזהה_מכונית כפי ש 3 :
הערה:
- כפי שהבנו לעיל, ה מחולל רצף הפעולה אינה בטוחה לעסקה, מה שמרמז שכל משתמש יקבל ערך שונה אם שני מסד נתונים מקבילים חיבורים מנסים לקבל את הערך הבא מרצף.
- ומספר הרצף של אותו משתמש יהיה סרק ויוצר פער ברצף אם משתמש אחד יכול להחזיר את העסקה לאחור .
דוגמה2
תן לנו לראות עוד דוגמה אחת ללמוד את סוג פסאודו סדרתי בפירוט.
סרי רמנוג'אן
אז, אנחנו הולכים ליצור עוד טבלה חדשה בתור ירקות טבלה בעזרת הפקודה CREATE לתוך דומה מאגר מידע זה אִרגוּן עם ה Veg_id עמודה בתור סידורי סוג פסאודו.
CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL );
תְפוּקָה
ה ירקות הטבלה נוצרה בהצלחה לאחר ביצוע הפקודות לעיל, כפי שמוצג בצילום המסך שלהלן:
פעם ה ירקות נוצרה, נכניס לתוכה כמה ערכים באמצעות הפקודה INSERT, ונשמיט את ה Veggies_id עמודה כפי שמוצג בפקודה שלהלן:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring');
תְפוּקָה
נקבל את ההודעה הבאה על יישום הפקודה לעיל: הערך הוכנס בהצלחה ל- ירקות שולחן.
לחלופין, נוכל גם להשתמש ב- בְּרִירַת מֶחדָל מילת מפתח ומשתמש ב- Veggie_id עמודה כפי שמוצג בפקודה הבאה:
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
תְפוּקָה
לאחר ביצוע הפקודה שלעיל, נקבל את ההודעה למטה, האומרת שאו שאנחנו יכולים להשתמש ב- מילת מפתח ברירת מחדל או ה התעלם משם העמודה , נקבל פלט דומה:
פרוס מערך java
לכן, נוסיף עוד כמה ערכים ל- מכוניות טבלה בעזרת ביצוע הפקודה:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Jalapeno Peppers','Fall'), ('Cucumbers','Summer'), ('Winter Squash','Winter'), ('Snow Peas','Spring'), ('Black Radish','All seasons'), ('Pumpkin','Fall');
תְפוּקָה
לאחר ביצוע הפקודה לעיל, נקבל את ההודעה למטה, המציגה שהערך הוכנס בהצלחה ל- ירקות שולחן.
לאחר יצירת והכנסת ה ירקות ערכי הטבלה, נשתמש ב- בחר הפקודה כדי להחזיר את כל השורות של ירקות שולחן:
SELECT * FROM Vegetables;
תְפוּקָה
לאחר יישום מוצלח של הפקודה לעיל, נקבל את הפלט שלהלן:
סקירה כללית
בתוך ה PostgreSQL Serial Pseudo-type בסעיף, למדנו פונקציונליות סדרתית מסוג פסאודו, המשמשת בעיקר ליצירת עליות אוטומטיות ערך עמודה עבור טבלה מסוימת.