السلام عليكم ورحمة الله وبركاته وصلنا في دروسنا
الى موضوع, شرح القيد 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 بالعربي,
الى اللقاء
الى اللقاء
لا تنسى الاشتراك في المدونة كذلك لا تترك الدرس
بدون مشاركة ودعمنا على الانتشار بشكل اوسع ويستفيد اكبر عدد ممكن من المهتمين
بهذا المجال ,,,,,
إرسال تعليق
لا تبخل علينا باقتراحك او قم بمشاركة الموضوع ليستفيد الاخرين ايضاً شكرا لزيارتك عزيزي الزائر