الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

CHECK constraints

مغلق
بدأه Eman في 23 ديسمبر 2001 · 5 رد · 1,109 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يستخدم أمر CHECK constraints للسيطرة على نوعية الإدخال في جملة الـ insert

ولكن في الحقيقة أنا لا أعرف كيفية استخدام هذا الأمر فهل لديكم معلومات عنه ؟؟

#2

عند تصميم الجدول يتم تعريف Check constraints

على سبيل المثال:

Create table test(f_code number check(f_code>100),f_name varchar2(50));

وعند عمل insert لقيم أكبر من 100 للحقل f_code سوف يعطى رسالة خطأ " تم إنتهاك قيد الإختبار "

==================

لا إله إلا أنت سبحانك أنى كنت من الظالمين

#3

السلام عليكم ورحمة الله وبركاته

الاخوه الافاضل

أريد أن أضع مثال أخر لزيادة التوضيح بالنسبه لموضوع ال 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 .

عمر محمد باعقيل

المدينه المنوره

baaqeel@onebox.com

#4

شكرا لكم جميعا على الرد

ولدي استفسار آخر لنفس الجمله

إذا كنت قد عرفت عمود من نوع نص (char) واريد ان يتم ادخال ارقام فقط (Digits) فكيف يمكنني التحكم بذلك؟؟

للتوضيح أكثر :

في Access يتم عمل ذلك عن طريق وضع قيمة الـ mask بـ (000) مثلا لو كان عدد الأحرف 3

#5

يمكنك تعريف تعريف الحقل في حالة الإدخال بتحويل حالته إلى to_number

#6

الأخت الفاضلة

في حالة الرغبة في عمل 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)

هذا الموضوع مغلق.

مواضيع مشابهة