يستخدم أمر CHECK constraints للسيطرة على نوعية الإدخال في جملة الـ insert
ولكن في الحقيقة أنا لا أعرف كيفية استخدام هذا الأمر فهل لديكم معلومات عنه ؟؟
يستخدم أمر CHECK constraints للسيطرة على نوعية الإدخال في جملة الـ insert
ولكن في الحقيقة أنا لا أعرف كيفية استخدام هذا الأمر فهل لديكم معلومات عنه ؟؟
عند تصميم الجدول يتم تعريف Check constraints
على سبيل المثال:
Create table test(f_code number check(f_code>100),f_name varchar2(50));
وعند عمل insert لقيم أكبر من 100 للحقل f_code سوف يعطى رسالة خطأ " تم إنتهاك قيد الإختبار "
==================
لا إله إلا أنت سبحانك أنى كنت من الظالمين
السلام عليكم ورحمة الله وبركاته
الاخوه الافاضل
أريد أن أضع مثال أخر لزيادة التوضيح بالنسبه لموضوع ال check constraint
-- نريد إنشاء جدول مكون من عدة حقول ويكون حقل الراتب يكون محصورا بين " رقميين " .
Create table new_emp ( empno number(4) , empname varchar2(20), sal number(6,2) check (sal between 1500 and 4500), dno number(2) );
في هذا الجدول لايمكن إدخال قيمه للراتب الا بين 1500 و 4500 فقط
وللتأكد نقوم بتنفيذ جملة الإدخال التاليه:
insert into new_emp values(1111,'omer',4501,10);
أو ننفذ جملة الإدخال التاليه :
insert into new_emp values(2222,'omer',1499,10);
نلاحظ ظهور الرسالة التاليه بعد تنفيذ جما الإدخال
check constraint (XXXX.SYS_C00XXXX) violated
وذلك لتعارض القيمه المدخله للراتب في جمل الإدخال السابقه مع ال check constraint .
عمر محمد باعقيل
المدينه المنوره
شكرا لكم جميعا على الرد
ولدي استفسار آخر لنفس الجمله
إذا كنت قد عرفت عمود من نوع نص (char) واريد ان يتم ادخال ارقام فقط (Digits) فكيف يمكنني التحكم بذلك؟؟
للتوضيح أكثر :
في Access يتم عمل ذلك عن طريق وضع قيمة الـ mask بـ (000) مثلا لو كان عدد الأحرف 3
يمكنك تعريف تعريف الحقل في حالة الإدخال بتحويل حالته إلى to_number
الأخت الفاضلة
في حالة الرغبة في عمل constraint على ال table الذي سبق إنشائه
و هناك حد أقصى للرقم الذي يمكن إدخالة و ليكن 999999
يمكنك عمل الآتي
alter table < table name > add constraint < constraint name > check ( < column name> between 0 and 999999 ) ;
أما في حالة الرغبة في عمل validation من خلال ال form
يمكنك عمل trigger على مستوى ال item بالأسم
when-validate-item و يمكنك كتابة هذا الكود
declare
L number ;
begin
L := length(:text_item4) ;
for n in 1 .. L loop
if substr(:text_item4,n,1) not in (chr(46),chr(48),chr(49),chr(50),chr(51),chr(52),
chr(53),chr(54),chr(55),chr(56),chr(57)) then
message('Please correct this character ==> '||substr(:text_item4,n,1));
message('Please correct this character ==> '||substr(:text_item4,n,1));
raise form_trigger_failure;
end if;
end loop ;
end;
اتمنى أن تكوني قد وصلت لما تتمنيه من خلال ردود الزملاء و ردي
اسامة (f) (f)
هذا الموضوع مغلق.