السلام عليكم
CONSTRAINT سنتحدث اليوم عن القيود
فى البدايه ما هى القيود :هى عباره عن شرط او مجموعه من الشروط يتم تنفيذها على عمود معين ومن خلال هذه القيود يتم تنفيذ الشرط DML المطلوب على جمل ال
تتكون القيود من خمس شروط
1-NOT NULL
وهى تضمن ان لا يحتوى العمود على قيمه فارغه
2-UNIQUE
وهى تضمن ان يحتوى عمود او مجموعه من الاعمده ان القيمه الموجوده بداخله فريده من نوعها وغير مكرره على مستوى الصفوف فى الجدول
3-PRIMARY KEY
NULL وهى تضمن ان لا يكون محتوى الصف مكرر على مستوى الصفوف داخل الجدول ولا تسمح بلقيم الفارغه
4-FOREIGN KEY
وهى تسمح بوجود علاقه بين عمودين فى جدولين مختلفين
5- CHECK
وهى تقوم بعمل شرط معين على عمود معين ويجب ان يحقق الشرط
ملحوظه
SYS_Cn Format او تقوم اوركال بتسميتها باستخدام CONSTRAINT يمكنك تسميه القيود
فى مرحلتين المرحله الاولى عند بناء جدول جديد المرحله التانيه بعد بناء الجدولCONSTRAINT يمكنك بناء او انشاء القيود
data dictionary يمكنك اظهار القيود باستخدام ال
تحديد القيود Defining Constraint
يمكنك تحديد القيود على مستويين
الاول على مستوى العمود كما بلمثال التالى
Code
CREATE TABLE emp
( emp_id NUMBER(6) CONSTRAINT emp_emp_id_pk PRIMARY KEY,
first_name VARCHAR2(16),
.......
);
الثانى على مستوى الجدول كما بلمثال التالى
Code
CREATE TABLE emp
( emp_id NUMBER(6),
first_name VARCHAR2(16),
.....
CONSTRAINT emp_emp_id_pk PRIMARY KEY (emp_id)
);
NOT NULL CONSTRAINT مثال على
ملحوظه
يجب ان يكون الشرط على مستوى العمود
ولكن توجد طرق اخرى للتعديل على الشرط بحيث لا يشترط ان يكون على مستوى العمود
Code
CREATE TABLE salary
( sal number(5) NOT NULL,
.......
);
NOT NULL مثال على طريقه اضافه و تسميه الشرط
Code
ALTER TABLE salary
ADD COLUMN max_sal NUMBER(6)
CONSTRAINT salary_max_sal_not_null CHECK (max_sal is NOT NULL);
NOT NULL كيف يمكنك الغاء الشرط
Code
ALTER TABLE salary ALTER COLUMN max_sal NULL;
السلام عليكم
How to Deferring Constraint
Constraint كيف يمكنك تأجيل عمل القيود
Code
ALTER TABLE <table_name>
ADD CONSTRAINT <constraint_name> PRIMARY KEY (<column_name>)
DEFERRABLE INITIALLY DEFERRED;
من خلال الكود التالى ستتمكن من اعاده استخدامه وتفعيله مره اخرى
Code
SET CONSTRAINT <constraint_name> IMMEDIATE;
Session من خلال الكود التالى ستتمكن من تفعيل جميع القيود على مستوى ال
Code
ALTER SESSIONSET CONSTRAINTS = IMMEDIATE;
No comments:
Post a Comment