الجزء السادس: العمود المتماثل Identity Column
اذا تم تعيين احد اعمدة الجدول بأن
يكون عموداً متماثل فهذا يعني ان القيم داخل هذا العمود سيتم توليدها بصورة تلقائية
عند اضافة سجل داخل الجدول, وهذا العمود الذي سيعرف وبصورة فريدة كل سجل داخل الجدول,
مثال بسيط عن ذلك, عند تسجيلك في موقع فأن هذا العمود سيولد رقم فريد للتعريف
الخاص بك بدون تدخل منك وبدون ان تدرك ذلك!
ملاحظة: يجدر الذكر ان خاصية
التماثل Identity حالها كنوع بيانات العمود لا يمكن تغييرها!
عند انشاء جدول جديد, حيث تكون هذه الخاصية عاطلة بصورة افتراضية.
لأضافة خاصية التماثل في احد
الأعمدة في الجدول عن طريق الواجهة الرسومية ,سأقوم بأنشاء جدول جديد بأسم “tblPerson1” وأضف له عامودين فقط “personID,
Name” , وسأختار
عامود ال ”personID” بأن يكون عموداً متماثل:
على مجلد الجداول tables أضغط على زر
الماوس الأيمن وأختر انشاء جدول جديد New Table :
قم بأنشاء الأعمدة وحدد العمود
الأول "personID" ليكون المفتاح الرئيسي PK , والذي
سيكون به خاصية التماثل Identity والتي سيتم تحديدها عن طريق نافذة خصائص العمود Column Properties , اذهب الى تفاصيل التماثل Identity specification وفي حقل (Is Identity ) غيره من No الى Yes , والIdentity increment القيمة التي سيتم اضافتها للقيمة السابقة مثلاً اذا كان الPersonID يساوي 10
وقمت بأضافة سطر او سجل جديد داخل الجدول فأن الPersonID للسجل
الجديد ستكون 11 لأن القيمة الأفتراضية للتزايد التماثل Identity increment =1 مالم تغيرها !
اما بذرة او اصل التماثل Identity Seed يقصد بها من اين يبداُ العد من ال0 او ال1 او ال100
وبعد ذلك قم بتخزين الجدول الجديد
بأسم "tblPerson1":
عند اضافة سجل جديد داخل الجدول
الذي سبق انشاءه, يجب عدم تزويد قيمة للPersonID ولا يجب
تحديدها اصلاً, لأن القيمة سيتم توليدها بصورة تلقائية لأن هذا الحقل يحتوي على
خاصية التماثل Identity , كما في المثال التالي:
نلاحظ قيمة الPersonID =1 لأنها
اول قيمة
ولكن السؤال هنا!!! اذا قمنا
بأضافة 3 حقول اخرى واخذت الرقم التماثلي بالتدريج 2 و3 و4 , واذا اردنا خذف اول
سجل سيكون الجدول به فراغ رقم 1 غير موجود ويأخذ العمود بتكملة التزايد من اخر رقم
كالأتي:
لحل ذلك سأقوم بتشغيل خاصية أضافة التماثل Identity_insert عن طريق الأمر التالي:
SET IDENTITY_INSERT tblPerson1 ON
ولكن في المثال اعلاه عند اضافة سجل جديد قمت بأضافة
اسماء الحقول لأن حقل الpersonID لم يعد متماثلأً عند اضافة Identity_insert وقمنا بتشغيلها
سؤال اخر؟
ماذا لوحذفنا كل الحقول من الجدول , واردنا الحقول
المضافة جديداً ان تبدأ من ال1 ؟
الحل :
اولاً قم بتعطيل
الIdentity_insert
ثانياً قم بتطبيق الأمر التالي:
DBCC CHECKIDENT('tblPerson1',RESEED,0)
الخطوة الأخيرة لأضافة خاصية التماثل لجدول جديد عن طريق
جملة الأستعلام:
CREATE TABLE tblPerson2
(
personID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
Name NVARCHAR(30) NOT NULL
)
Comments
Post a Comment