sequence object in SQL Server 2012

في هذة الاوراق سوف نتكلم عن انشاء ال  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’)

 

 

 

شاركنا بارد