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

Lock Table During Insert

بدأه omar_sabha في 28 يناير 2008 · 11 رد · 1,460 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي جدول فيه ID ، وممكن في بعض الحالا ان يتم الدخول للصفحة وعمل ÷ىسثقف بنفس الوقت ، السؤال هو كيف يمكن عمل Lock ل Table وعند الانتهاء من عملية Insert ينتهي مفعول ال lock ويقوم بالعملية شخص اخر

ولكم جزيل الشكر

#2

اذا مشان الـ PK فقط استخدم Identity للحقل و هيك ما بتضل مسؤوليتنا توليد Unique PK

#3

شكرا اخي ولكن ال ID ليست identity ولا اريد ان تكون كذلك لعدة اسباب

#4

طيب ممكن تشرح المشكلة أكثر؟

يعني هل المطلوب عملية INSERT فقط؟

و ما أهمية توليد الـ ID يدوياً لك؟

#5

المطلوب في عملية ال Insert وUpdate

توليد ال ID يدويا ، انا عندي صفحة ارسال ايميلات وكل ايميل اله رقم وممكن ارسل نفس الايميل لاكتر من شخص فمثلا

ContactID = 1 ID = 1

ContactID = 2 ID = 1

يعني ال ID ممكن تتكرر باكتر من Record

وشكرا

#6
اقتباس
توليد ال ID يدويا ، انا عندي صفحة ارسال ايميلات وكل ايميل اله رقم وممكن ارسل نفس الايميل لاكتر من شخص فمثلا

على ماأعتقد يوجد عندك مشكلة بالتحليل

اين المشكلة اذا كان ايميل لاكثر من شخص فلا داعي لتوليد الـid يدوياً

اما ان يكون ContactID هو identity

أو اذا كان في حالة لكل شخص اكثر من أيميل و ايميل يمكن ان يكون لاكثر من شخص في هذه الحالة يصبح الـid والـContactID مفتاح مركب ومن المستحيل ان يتكرر ولاتوجد مشكلة

-----------------------------------------------------------------------------------------------------------------------------





 

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

Mohammad Sonaiea
 

#7

لكن انت لم تضع بالحسبان انه يمكن ان يعمل اثنين على النظام ويقومان بارسال ايميل بنفس الوقت

#8
اقتباس
لكن انت لم تضع بالحسبان انه يمكن ان يعمل اثنين على النظام ويقومان بارسال ايميل بنفس الوقت

وليكن ذلك اين المشكلة ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

طيب ممكن ان تضع لنا مخطط الـdatabase

-----------------------------------------------------------------------------------------------------------------------------





 

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

Mohammad Sonaiea
 

#9

اخي العزيز لنفرض ان ال ID وصل ال رقم 5

وكنت انا وانت نعمل على النظام واردنا ان نبعث ايميل وصدف اننا بعثنا الايميل بنفس الوقت بدون وجود اي فارق فاي عملية nsert سوف تتم التي قمت بها انا ام انت ام انه سيحدث Exception

لهذا اريد استخدام Lock

#10

أخي الكريم

اقتباس
بدون وجود اي فارق

هذه مستحيلة لنفرض ان ذلك حدث وبنفس الوقت وبنفس التكة <_<

انا عملت insert على جدول الemail و بجدول الـemail يوجد identity وليكن IDemail والايميل اخذ الرقم1 أي idemail=1

وانا كمستخدم لدي سجل لدى جدول اسمو user وفيه identity وليكن IDuser وكان الـid خاص فيني هو 2

وحتماً يوجد جدول ثالث وليكن email_user وفيه مفتاح مركب عبارة عن حقلين وهما IDemail=1و IDuser=2

اما انت ليكن لديكIDuser =3 وبالجدول الثالث email_user يصبح المفتاح المركب كتالي IDemail=1و IDuser=3

اين المشكلة؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟!!!!!

تم تعديل هذه المشاركة بواسطة محمد سماقية في 29 يناير 2008 في 17:44

-----------------------------------------------------------------------------------------------------------------------------





 

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

Mohammad Sonaiea
 

#11
محمد سماقية كتب:
أخي الكريم

هذه مستحيلة لنفرض ان ذلك حدث وبنفس الوقت وبنفس التكة <_<

انا عملت insert على جدول الemail و بجدول الـemail يوجد identity وليكن IDemail والايميل اخذ الرقم1 أي idemail=1

وانا كمستخدم لدي سجل لدى جدول اسمو user وفيه identity وليكن IDuser وكان الـid خاص فيني هو 2

وحتماً يوجد جدول ثالث وليكن email_user وفيه مفتاح مركب عبارة عن حقلين وهما IDemail=1و IDuser=2

اما انت ليكن لديكIDuser =3 وبالجدول الثالث email_user يصبح المفتاح المركب كتالي IDemail=1و IDuser=3

اين المشكلة؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟!!!!!

تكتكه ثم اصابه :)

مع انها من المستحيل أن يحص نفس الاثنان على نف رقم الـ id

قم باضافة ال record في الداتا بيسس ستحصل على رقم id ثم قم بجلبه عن طريق identity_scope سوف لن يحصل غيرك على هذا الرقم وقم بارسال الرساله على اساسه

انتبه لموضوع critical area من المستحيل الاضافه في نفس الوقت سوف يكون هناك priority او delay time وـحدهما سوف يحصل على التسجيل قبل الآخر

هذه الأمور محلوله من قبل مصممين النظام اما انت كونك مطبق لبرامج على النظام وف لن تحتاج للتفكير في هذه النقطه وأعلم انه من المستحيل ان ياخ اثنان نفسس الرقم او يسجلون في نفس الوقت

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#12

use this code

lock table TABLENAME in EXCLUSIVE MODE;

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