في هذا القسم سوف نفهم عمل PostgreSQL المسلسل النوع الزائف، والذي يسمح لنا بتحديده أعمدة الزيادة التلقائية في الجداول. ونحن نرى أيضا أمثلة التابع PostgreSQL النوع الزائف التسلسلي .
ما هو النوع الزائف لـ PostgreSQL التسلسلي؟
في PostgreSQL، لدينا نوع معين من مولد كائنات قاعدة البيانات المعروف باسم مسلسل ، الذي اعتاد عليه إنشاء سلسلة من الأعداد الصحيحة التي تستخدم بشكل متكرر ك المفتاح الأساسي في طاولة.
يمكن إنشاء التسلسل بمساعدة المسلسل الزائف ، بينما نقوم بإنشاء جدول جديد، كما نرى في الأمر التالي:
CREATE TABLE table_name( ID SERIAL );
يقوم PostgreSQL بما يلي إذا قدمنا ملف المسلسل الزائف إلى بطاقة تعريف عمود:
- أولاً، سيقوم PostgreSQL بإنشاء كائن تسلسل ثم إنشاء القيمة التالية التي تم إنشاؤها بواسطة التسلسل كقيمة محددة مسبقًا لعمود معين.
- بعد ذلك، سيقوم PostgreSQL بتحسين ملف ليس القيد فارغة إلى عمود المعرف نظرًا لأن التسلسل ينتج دائمًا عددًا صحيحًا قيمة غير فارغة .
- أخيرًا، سيوفر 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 النوع الزائف التسلسلي وقد تم تصنيفها إلى ثلاثة أنواع وهي كما يلي:
لدينا الجدول التالي الذي يحتوي على كافة النوع الزائف التسلسلي المواصفات التي يدعمها PostgreSQL:
اسم | حجم التخزين | يتراوح |
---|---|---|
سمولسيرال | 2 بايت | 1 إلى 32767 |
مسلسل | 4 بايت | 1 إلى 2147483647 |
مسلسل كبير | 8 بايت | 1 إلى 9223372036854775807 |
بناء جملة نوع PostgreSQL التسلسلي الزائف
بناء جملة 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 .
بعد إنشاء وإدراج سيارات قيم الجدول، سوف نستخدم يختار يقوم الأمر بإرجاع جميع صفوف الملف سيارات طاولة:
SELECT * FROM Cars;
انتاج |
بعد تنفيذ الأمر أعلاه بنجاح، سنحصل على النتيجة التالية:
يمكننا استخدام pg_get_serial_sequence() دالة للحصول على اسم التسلسل لـ a مسلسل عمود في جدول محدد كما يمكننا أن نرى في بناء الجملة أدناه:
pg_get_serial_sequence('table_name','column_name')
للحصول على القيمة الحالية تم إنشاؤها بواسطة التسلسل، يمكننا تمرير اسم التسلسل إلى الدالة currval().
في المثال التالي استخدمنا الكورفال() وظيفة لإرجاع القيمة الحالية التي تنتجها سيارات طاولة Car_id_seq هدف:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
انتاج |
بعد تنفيذ الأمر أعلاه، سنحصل على النتيجة التالية:
يمكننا استخدام إرجاع Car_id جملة في أمر INSERT إذا أردنا الحصول على تلك القيم التي تم إنشاؤها بواسطة التسلسل عندما نقوم بإدراج صف جديد في الجدول.
يتم استخدام الأمر أدناه لإدراج صف جديد في سيارات الجدول وإرجاع تلك السجلات التي تم إنشاؤها لـ معرف السيارة عمود.
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
انتاج |
عند تنفيذ الأمر أعلاه، سنحصل على الإخراج التالي، والذي يُرجع الملف معرف السيارة مثل 3 :
ملحوظة:
- كما فهمنا أعلاه، مولد التسلسل العملية ليست آمنة للمعاملات، مما يعني أن كل مستخدم سيحصل على قيمة مختلفة إذا اثنين من قاعدة البيانات المتوازية تحاول الاتصالات الحصول على القيمة التالية من التسلسل.
- وسيكون الرقم التسلسلي لهذا المستخدم خاملاً ويخلق فجوة في التسلسل if يمكن لمستخدم واحد التراجع عن المعاملة .
مثال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');
انتاج |
سوف نتلقى الرسالة التالية عند تنفيذ الأمر أعلاه: تم إدراج القيمة بنجاح في الملف خضروات طاولة.
أو يمكننا أيضًا استخدام تقصير الكلمة الأساسية ويستخدم معرف الخضروات العمود كما هو موضح في الأمر التالي:
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
انتاج |
بعد تنفيذ الأمر أعلاه، سنحصل على الرسالة أدناه، والتي تفيد أنه يمكننا استخدام الأمر الكلمة الأساسية الافتراضية أو ال تجاهل اسم العمود ، سنحصل على ناتج مماثل:
تحويل سلسلة حتى الآن
لذلك، سوف نقوم بإضافة المزيد من القيم إلى سيارات الجدول بمساعدة اتباع الأمر:
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 النوع الزائف التسلسلي لقد تعلمنا وظيفة من النوع الزائف التسلسلي، والتي تُستخدم في الغالب لإنشاء ملف الزيادات التلقائية قيمة العمود لجدول معين.