السلام عليكم ورحمة الله وبركاته
كما في العنوان:
كيف الحل كي اسوي حقل ذات ترقيم تلقائي كما في القواعد البيانات الأخري.
السلام عليكم ورحمة الله وبركاته
كما في العنوان:
كيف الحل كي اسوي حقل ذات ترقيم تلقائي كما في القواعد البيانات الأخري.
السلام عليكم
يجب أن تقوم بإنشاء sequence لعمل حقل تلقائي ويتم إنشائها كالتالي:
CREATE SEQUENCE STUDENT_SUBJECT_SEQ START WITH 1 INCREMENT BY 1 NOMAXVALUE;
حيث STUDENT_SUBJECT_SEQ هو عباره عن اسم ال sequence التي قمت بتعريفها ، ويبدأ الترقيم من الموقع 1 ويزداد بقيمة 1 ، NOMAXVALUE اي لا يوجد قيمة نهائيه يقف عندها الترقيم.
مع تحياتي
MCP
MCTS:.Net Framework 2.0: Web Applications
MCPD:Web Developer
بارك الله فيك. سأحاول هذا الحل.
السلام عليكم
يجب أن تقوم بإنشاء لكل جدول sequence، ولاستخدام هذه ال sequence، على افتراض أنك تريد إدخال بيانات عن طريق الفورم.
قم باستخدام ال TRIGGER (PRE_INSERT( على مستوى ال BLOCK .
أي قبل الإضافة، وعلى افتراض أنك تريد الحقل TAG_NO أن تضيف له الترقيم التالي.
فيجب أن تقوم بالتالي:
SELECT STUDENT_SUBJECT_SEQ .NEXTVAL INTO :BLOCK(NAME).TAG_NO FROM DUAL;
مع تحياتي
تم تعديل هذه المشاركة بواسطة عبدالله جابر شقليه في 20 يونيو 2004 في 01:16
MCP
MCTS:.Net Framework 2.0: Web Applications
MCPD:Web Developer
وايه الحل فى حالة حذف سجلات بالنسبة لترتيب الارقام
سبحان الله و الحمد لله لا اله الا الله و الله اكبر
السلام عليكم ورحمة الله وبركاته
في هذا المجلد الجدول و الفورم
كل اللي عليك أنك تنشأ ل الجدول ثم تعمل run للشاشة
CREATE TABLE SA(
AKNUM NUMBER,
FNAME VARCHAR2 (15),
SNAME VARCHAR2 (15),
TNAME VARCHAR2 (15),
FAMLYNAME VARCHAR2 (15),
NATIONAL VARCHAR2 (15),
COMEDATE DATE,
COMEDAY VARCHAR2 (9),
COMEMONTH VARCHAR2 (9),
CLOCKCOME VARCHAR2 (10),
LEVDATE DATE,
LEVDAY VARCHAR2 (9),
LEVMONTH VARCHAR2 (9),
CLOCKLEV VARCHAR2 (10),
CONSTRAINT AK_NUM PRIMARY KEY (AKNUM))
/
و إن شاء الله أنه يفي بالغرض
و أي خدمة يا أخوان أنا تحت الأمر
و السلام عليكم
السلام عليكم ...
في الحقيقة انا احبذ من اجل الترقيم التلقائي الحصول على اكبر قيمة في الجدول و منثما اضيفهل للسجل الذي اريد ان ارقمها زايد واحد
على سبيل المثال ( و ارجوا ان يكون صحيح لاني منذ فترة و انا لا اتعامل مع SQL )
no=select max(الحقل الذي تريد ترقمه تلقائياً) from ...... new_no=no+1
و السلام عليكم :)
بنت اليمن
لا اله الا الله .. محمد رسول الله
(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)
يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين
السلام عليكم
اخت بنت اليمن، طريقة صحيحة، لكن بها مشاكل.
لو افترضنا انه في اثنين بنفس الوقت كان بيشتغلوا على نفس الجدول، يعني الاثنين اخذوا اعلى قيمة للحقل، وكل واحد ضاف عليه قيمة، لكن عندما قاملوا بحفض البيانات وجدنا انه في ترقيم حقول نفس الترقيم الها.
طيب حتى لو واحد قرى القيمة قبل الثاني، ولكن لم يقم بعملية حفظ البيانات، وأجى الثاني قرى القيمة نفسها، رإم انه الشخص الثاني كان سابقه لكنه لم يقم بحفض البيانات.
اما عملية ال sequence فأنه هي الأضمن، لأنه لو الاثنين قروى نفس القيمة، ومن ثمه قام واحد منهم باعتماد البيانات، وأتى الأخر لكي يعتمدها سوف تظهر له رسالة وتخبره بأن رقم هذا الحقل موجود مسبقاً.
أرجوا أن تكوني قد عرفتي ما الفرق بينهم.
اخ فارس عبد الله عندما يتم حذف سوف يفضل الترقيم ماشي عادي، ولا يوجد به مشاكل.
مع تحياتي
MCP
MCTS:.Net Framework 2.0: Web Applications
MCPD:Web Developer
بسم الله الرحمن الرحيم
يمكن ان تستخدم تريجر pre_insert على مستوى البلوك
و تكتب فيه هذا الكود
select nvl(max(Field_name),0) + 1
into :Field_name
from table_name;
بسم الله الرحمن الرحيم
إخواني الكرام
هذا الموضوع وهو موضوع الترقيم التلقائي تم مناقشته كثيرا ولكن مع الأسف لم نخرج بنتيجة لأن هناك خلاف حول الموضوع البعض يقول استخدم sequence والبعض الآخر يقول استخدم أكبر قيمة وأضف عليها واحد فما هي أفضل طريقة
يرجى التوضيح ولو بمثال عملي بسيط عبارة عن نموذج مثلا على سبيل المثال جدول يحتوي حقلين حقل رقم الموظف واسم الموظف بحيث تكون خاصية الترقيم التلقائي في رقم الموظف
أخوكم / لؤي (أبو العبد)
أخواني : أضم صوتي لصالح sequence بسبب بسيط جداً : أن تقوم بعملية قراءة لأعلى قيمة في الجدول فهذا يتطلب عملية select و بالتالي تنفيذ عملية على القاعدة وجلب البيانات و زيادة الضغط على القاعدة ..... أم بالنسبة لوضع الكود اللازم في Pre-insert داخل الفورم فلا أحبذه ....... أفضل دوماً انشاء trigger على مستوى الجدول و يقوم بمعالجة هذا الأمر و هذا يؤدي إلى أداء أعلى بكثير من كتابته على الفورم .........
بالتوفيق
تم تعديل هذه المشاركة بواسطة informat في 4 مارس 2006 في 17:03
هذا الموضوع مغلق.