sql server دروس - شرح القيد AUTO_INCREMENT و القيد IDENTITY sql server دروس - شرح القيد AUTO_INCREMENT و القيد IDENTITY - اقرا معي وتعلم على الانترنت

sql server دروس - شرح القيد AUTO_INCREMENT و القيد IDENTITY

sql server دروس - شرح القيد AUTO_INCREMENT و القيد  IDENTITY

السلام عليكم ورحمة الله وبركاته وصلنا في دروسنا الى موضوع, شرح القيد unique والقيد check اضغط عليه لقراءته اليوم ايها الاحبة نواصل دروسنا في شرح sql بالعربي وموضوعنا اليوم هو 

دروس sql server بالعربي - شرح القيد AUTO_INCREMENT و القيد  IDENTITY 


توفر قواعد البيانات آلية لتوليد قيم عددية بصورة آلية كقيم لحقل ما عند إضافة سجل جديد الى الجدول , يمكن استخدام هذه التقنية بالاشتراك مع القيد PRIMARY KEY لتوليد قيم تسلسلية تلقائية في حقل يكون هو حقل المفتاح الرئيسي للجدول .
تستخدم قواعد البيانات تعابير مختلفة لنفس الغرض:
نستخدم في SQL Server التعبير IDENTITY .
نستخدم في MySQL التعبير AUTO_INCREMENT .
نستخدم في DB2 التعبير GENRATED ALWAYS AS IDENTITY .
اما في Oracle فنحتاج لإنشاء متتالية بالأمر Create Sequence .

مثال :
نود إنشاء جدول بأرقام تسلسلية للطلاب وأسمائهم:اذن

في قواعد بيانات SQL Server :

الأرقام تبدأ من 100 وتتزايد بمقدار 1:
CREATE TABLE Students
(Name varchar(50) ,
ID INT IDENTITY (100,1) PRIMARY KEY NOT NULL);

في حال لم نحدد البداية لبدء العد ( 100 ) والتزايد ( 1) تكون القيمة التلقائية للبداية والتزايد هي (1) .


اما في قواعد بيانات MySQL تصبح الصيغة كما يلي :

CREATE TABLE Students
(Name varchar(50) ,
ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL);

وفي قواعد البيانات Access تصبح الصيغة كما يلي :


CREATE TABLE Students
(Name varchar(50) ,
ID INT AUTOINCREMENT (100,1) PRIMARY KEY NOT NULL);

اما في قواعد بيانات DB2 تكون الصيغة كالتالي :

CREATE TABLE Students
(Name varchar(50) ,
ID INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY);

في هذه الصيغة نستخدم ALWAYS للإشارة إلى أننا لن نسمح بإدخال قيم يدوية لحقل التعداد الآلي. لتمكين إدخال القيم يدويًا يمكننا استخدام BY DEFAULT  بدلاً من ALWAYS .

 
دعونا نقدم هذه الملاحظات :
لا تدعم قواعد البيانات Oracle التعابير IDENTITY او AUTO_INCREMENT المستخدمة في قواعد البيانات الاخرى لذا تستخدم Oracle تعبير خاص لإنشاء متوالية هو التعبير CREATE SEQUENCE لمحاكاة عمل هذه القيود . وتكون صيغة هذا التعبير كما يلي:
CREATE SEQUENCE sequence_name
INCREMENT increment_step
START WITH start_seed;

 عند انشاء مثل هذه المتوالية يمكن استخدام القيم التي تأخذها لإدراجها في صيغ SQL اخرى.
لإعادة قيمة المتوالية وزيادة عداد المتوالية بمقدار الخطوة يكفي استخدام التعبير sequence_name.NextVal
يتم استخدام قيم هذه المتوالية مباشرة في تعبير Insert عند ادراج سجل جديد في جدول ما وذلك بالصيغة التالية :
INSERT INTO mytable
(Column1, Column2, Column3)
Values (sequence_name.NextVal, Value2, Value3);

نلاحظ هنا اننا اعطينا للحقل Column1 القيمة الخاصة بالمتوالية واستخدمنا الطريقة NextVal  لاستجرار القيمة التالية للمتوالية .

مثال :
نريد ان ننشئ الجدول Products في قاعدة بيانات Oracle يحتوي حقلين الاول خاص بارقام المنتجات productID والاخر خاص بوصف المنتجات ProductDescription كما نود ان نجعل الحقل productID مفتاح رئيسي للجدول وجعل قاعدة البيانات تعطى لهذا الحقل ارقام متسلسلة تلقائية .

الحل
لكي نكمل هذا العمل علينا اولا انشاء الجدول وذلك بالصيغة التالية :
CREATE TABLE Products
(productID INT PRIMARY KEY NOT NULL ,
productDescription varchar(75));

ثانيا نقوم بإنشاء متوالية وليكن اسمها Counter وذلك بالصيغة التالية :
CREATE SEQUENCE Counter;

لاحظ اننا لم نحدد لها بداية للعد والخطوة لذلك ستحدد قيمتها تلقائيا بالعدد 1 .
الان ادراج سجل في جدولنا الجديد وسنستخدم المتوالية كقيمة للحقل productID وذلك كما بالصيغة التالية :
INSERT INTO Products
(productID , productDescription)
Values (Counter.NextVal , ‘any Porduct description’);

اكتقي بهذا القدر ونلتقي في الدرس من دروس sql server بالعربي,  
الى اللقاء

لا تنسى الاشتراك في المدونة كذلك لا تترك الدرس بدون مشاركة ودعمنا على الانتشار بشكل اوسع ويستفيد اكبر عدد ممكن من المهتمين بهذا المجال ,,,,,
شارك الموضوع
تعليقات
محتوى قد يهمك

.