في هذة الاوراق سوف نتكلم عن انشاء ال sequence object وما هي الفوائد التي يقدمها لنا
ماهو ال sequence هو عبارة عن قالب يقوم مستخدم قواعد البيانات بأنشاء في قاعدة البيانات ويكون الغرض منه انتاج رقم متسلسلس خاص بقاعدة البيانات ومن الفوائد التي يقدمها انشاء رقم متسلسل بشكل تصاعدي او تنازلي ويمكن عمل اعادة تهيئة له اي rest ليقوم بالعدد من البداية
ال sequence على عكس ال identity columns غير مرتبط مع جدول محدد اما ما يحدد قيمتة هو عندما يتم استدعائة بواسطة جملة next value اما العلاقة بين ال sequence وال tableنتحكم بها عن طريق ال application
وايضاً على عكس ال identity columns قيمتها نتشأ عندما الادخال او اثناء عمليات ال insert من الممكن في حالة عدم الادخال الحصول على قيمة ال sequence بواسطة استخدام ال next value for function
هذة الفاكشن سوف تجلب لنا القيمة التي استخدمت من قبل ال sequence بدون الحاجة للادخال الى الجدول
نأتي الان الى الصيغة التي ينشا بها هذا ال Sequence كالتالي
CREATE SEQUENCE [schema_name . ] sequence_name
[ AS [ built_in_integer_type | user-defined_integer_type ] ]
[ START WITH <constant> ]
[ INCREMENT BY <constant> ]
[ { MINVALUE [ <constant> ] } | { NO MINVALUE } ]
[ { MAXVALUE [ <constant> ] } | { NO MAXVALUE } ]
[ CYCLE | { NO CYCLE } ]
[ { CACHE [ <constant> ] } | { NO CACHE } ]
[ ; ]
لنشرح الان خيارات عمل ال sequence
1- يجب ان يكون هنالك تسمية لل Sequence
2- جيب ان يكون data type له ويشمل الانواع التالية
-
· tinyint – Range 0 to 255
- · smallint – Range -32,768 to 32,767
- · int – Range -2,147,483,648 to 2,147,483,647
- · bigint – Range -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
-
· Decimal – and numeric with a scale of 0.
3- Start With وتعني هنا الرقم الذي سوف يبدأ منه ال Sequence
4- Increment by تعني مقدار الزيادة التي سوف يزدادها العداد وقد تكون تنازلية او تصاعدية
5- [ MINVALUE <constant> | NO MINVALUE ] تحديد اصغر قيمة من الممكن ان نتعامل معها اثناء عمل cycle للعداد اما الرقم الافتراضي له فيكون قيمة ال data type المححدة للعداد
6- [ MAXVALUE <constant> | NO MAXVALUE اعلى قيمة ممكن ان يصلها العداد ويتوقف او يقوم بعمل Cycle للعداد بناء على هذة الاكبر قيمة
7- [ CYCLE | NO CYCLE ] وتعني اتمام عملية ال restart لقيمة العداد بعد الوصول الى اعلى قيمة له اي العودة للبدا من ال min value المحددة له (( واصغر قيمة تحدد له في حال كانت الزيادة بشكل تنازلي)) الحالة الافتراضية للعداد المنشأ هي NO Cycle
8- [ CACHE [<constant> ] | NO CACHE ] له اماكن محددة المستخدمة حيث يقوم بخزن القيمة الحالية للعداد في ال memory لتقليل ال I\O
من الفوائد الاخرى لل Sequence انة من الممكن خاصية انشاء والتعديل على بيانات العداد الى شخص محدد بلاعتماد على Schema
اناخذ المثال التالي
Create sequence test.IqIdentety
As int
Start with 1
INCREMENT by 3;
اما طريقة اخال قيمة ال identity الى الجدول فتكون كالتالي
Insert into (Fld_id,Fld_Name) values (next Value for test.iqidentety ,N’test’)