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

الرجاء المساعدة بي كود اختبار حقل بي CHECK Constraint

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

عندي مشكلة ياشباب في قاعدة بيانات مكتبة في اختبار حقل في جدول الاستعارة

عدد الكتب التي يمكن استعارتها المشترك في الوقت الواحد هي 4 كتب

صورة البيانات داخل جدول الاستعارة ورقم المشترك تكرار اكثر من 4 مرات

OrkxO.png

اريد كود اضعه في حقل رقم المشترك بحيث المشترك اذا تكرار رقمة اكثر من اربع مرات في جدول الاستعارة لايستطيع الاستعارة

صور من العلاقة بين جدول الاستعارة والمشتركين

jFnCm.png

تم تعديل هذه المشاركة بواسطة jemmynet في 2 يوليو 2011 في 22:36

#2

تبعاً للمكان الذي ستستخدم فيه الاستعلام، قم بالتعديل على التالي بما يناسبك

select count(Member_Num) from Borroweds where End_Date_Borrowed = '' and Member_Num = 1234

هذا ما فكرّت به وفقاً لوصف سؤالك.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

1

تم تعديل هذه المشاركة بواسطة jemmynet في 3 يوليو 2011 في 16:15

#4

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

اخي يمكنك انشاء دالة على النحو التالي


CREATE FUNCTION CheckFnctn()
RETURNS int
AS
BEGIN
DECLARE @retval int
SELECT @retval = COUNT(Member_Num) FROM Borroweds
RETURN @retval
END

ومن ثم قم بانشاء القيد التالي


ALTER TABLE Borroweds
ADD CONSTRAINT chkRowCount CHECK (dbo.CheckFnctn() <4 )

.:: Wish to become better and better ::.

#5

1

تم تعديل هذه المشاركة بواسطة jemmynet في 3 يوليو 2011 في 16:15

#6

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

عفوا اخي نسيت تمرير رقم المشترك للدالة, قم باضافته وعمل Where بحيث يكون رقم المشترك يساوي الرقم الممرر

.:: Wish to become better and better ::.

#7

تعديل الدالة السابقة :

CREATE FUNCTION CheckFnctn(@Member_Num int,@Start_Date_Borrowed date)
RETURNS int
AS 
BEGIN   
DECLARE @retval int   

SELECT @retval = COUNT(Member_Num) FROM Borroweds where  Member_Num=@Member_Num and Start_Date_Borrowed=@Start_Date_Borrowed


RETURN @retval

END
GO

الربط مع الجدول

ALTER TABLE Borroweds add CONSTRAINT chkRowCount CHECK (dbo.CheckFnctn(Member_Num,Start_Date_Borrowed)<=4 )

التنفيذ :

لايظهر الخطأ في حالة الإدخال أربع مرات :

Insert into dbo.Borroweds values (1,1,1,'7-3-2011','7-10-2011')
Insert into dbo.Borroweds values (2,1,1,'7-3-2011','7-10-2011')
Insert into dbo.Borroweds values (3,1,1,'7-3-2011','7-10-2011')
Insert into dbo.Borroweds values (4,1,1,'7-3-2011','7-10-2011')

في حالة تجاوز الاربع مرات :

Insert into dbo.Borroweds values (1,1,1,'7-3-2011','7-10-2011')
Insert into dbo.Borroweds values (2,1,1,'7-3-2011','7-10-2011')
Insert into dbo.Borroweds values (3,1,1,'7-3-2011','7-10-2011')
Insert into dbo.Borroweds values (4,1,1,'7-3-2011','7-10-2011')
Insert into dbo.Borroweds values (5,1,1,'7-3-2011','7-10-2011')

رسالة الخطأ

اقتباس
Msg 547, Level 16, State 0, Line 1

The INSERT statement conflicted with the CHECK constraint "chkRowCount". The conflict occurred in database "Library", table "dbo.Borroweds".

The statement has been terminated.

فلسطين .. سوريا ..بورما ......وماذا بعد ؟!

سابقا

medo_programming

موقعي : www.alkhayat-it.com

مواضيع مهمه

-----------------------------------------------:

تعلم كل شىء عن الTriggers

#8

جزاك الله الف خير

اخي الكريم وجعله في ميزان

حسناتك

مقصرت الله يحفظك

jemmynet كتب:

جزاك الله الف خير

اخي الكريم وجعله في ميزان

حسناتك

مقصرت الله يحفظك

تم تعديل هذه المشاركة بواسطة jemmynet في 3 يوليو 2011 في 16:07

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