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

كيف أستطيع عمل شرطين بالقيد check

بدأه m_w_rose في 21 يونيو 2014 · 2 رد · 761 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 يعطيكون العافية جميعا .....

أنا عندي قاعدة بيانات بالsql srever 2008 (و هي وظيفة لمادة عندي اسم القاعدة المستودعات) و منها في جدول للموظفين و المواد  ، و يوجد على أحد الحقول قيد و الجدول كالتالي :

 

Create table EmployeesProducts
 (
  ProductID int ,
  EmployeeID int ,
  ReceptionDate datetime  not null  constraint DF_ReceptionDate default ( getdate()),
  ReturnDate datetime default null ,  
 Constraint PK_EmployeesProducts primary key (ProductID,EmployeeID)
 )

 

و الحقل يلي عليه قيد هو حيت أنا الحقل (ReceptionDate) هو تاريخ الاستلام للمادة ، و الحقل  (ReturnDate) هو تاريخ إعداة المادة لو أعديت  ، ولكن القيد هو أنه يجب أن يكون تاريخ لإعادة null 

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

 Alter table EmployeesProducts

    add constraint CK_ReturnDate_ReceptionDate

    check ( ReturnDate >= ReceptionDate  or ReturnDate = null)

لكن عند الإدخال حسب هذا القيد فسوف يقبل التاريخ سواء أكان أكبر أو أصغر أو يساوي و يقبل الnull " يعني فعليا لم يتم تحقيق الشرط الذي أريده بل أعطا سماحيات كأني لم أكتبه " ، و عندما أحذف (or ReturnDate = null) فإنه لا يقبل الإدخال القيم للجداول فارغة و يجبرني على وضع تاريخ للإعادة " و هنا أيضا تحقق جزء من قيدي و لم يتحقق كله حيث أنني أريد أن يقبل لبعض السجلات قيمة فارغة لتاريخ الإعادة " ، فما العمل ؟؟

الرجاء ايجاد حل أو طريقة

 

meme

#2

السلام عليكم

 

لقد وجدت الحل و لكي يستفيد الآخرون لو واجتهم نفس مشكلتي ......... سأكتبه ، الحل هو :

check ( ReturnDate >= ReceptionDate  or ReturnDate = ' ')

أي فق بوضع '  ' عوض عن كلمة null فقط ..

 مع تمنياتي بالتوفيق للجميع

meme

#3

='' لا تكافئ null 

يجب عليك استخدام IS Null 

هكذا : 

 

   check ( ReturnDate >= ReceptionDate  or ReturnDate IS NULL)

1

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