إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

هل من الممكن إنشاء تيبل يتكون من رو واحد


5 رد (ردود) على هذا الموضوع

#1 عمرو

عمرو

    عضو

  • الأعضــاء
  • 47 مشاركة

تاريخ المشاركة 07 May 2004 - 09:52 PM

اريد ان ابنى تيبل يتكون من صف واحد فقط لا غير و لا يستطيع اليوزر ان يدخل صف اخر غيره


هل هذا ممكن ؟؟

#2 عبداللطيف

عبداللطيف

    مــشــرف عــام

  • الإشراف العام
  • 1,267 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 08 May 2004 - 08:08 AM

تحياتي للجميع

يوجد العديد من الطرق ومنها ان تضع عن ماحولتها الاضافة مثلاً

select count(code) into :text1. from emp;

if :text = 1 then
message 'لايمكن اضافة اكثر من سجل';
....
...

#3 عمرو

عمرو

    عضو

  • الأعضــاء
  • 47 مشاركة

تاريخ المشاركة 08 May 2004 - 06:59 PM

شكرا اخى توفى
على هذا الكود الفعال و لاكن كنت اسئل إن كان يمكن هذا عند بناء التيبول على الداتا بيز ام لا
على اى حال هذا الكود يفى بالغرض و انا اشكرك مره اخرى يا اخى العزيز



اخوك عمرو

#4 KhalidOCP

KhalidOCP

    Oracle Certified Professional

  • الأعضــاء
  • 269 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 09 May 2004 - 10:21 AM

الاخ عمرو جرب هذا الكود انا جربته و زبط :
اعمل trigger على التيبل كما يلي :
create or replace trigger bef_ins
before insert on khalid
declare
tot number ;
begin select count(*)
into tot from khalid; if tot >= 1 then
raise_application_error(-20222,'You cants insert more than one record

at this table') ;
end if ;
end ;
/

بحيث khalid هو اسم التيبل هنا
عند اضافة اكثر من record يعطي ال error التالي :
ORA-20222: You cants insert more than one record at this table
ORA-06512: at "UNIV.BEF_INS", line 8
ORA-04088: error during execution of trigger 'UNIV.BEF_INS'

كم من صحيح مات بغير علة ... وكم من سقيم عاش حينا من الدهر .
اللهم احسن ختامنا واجعل خير اعمالنا خواتيمها.

#5 عبدالله ندا

عبدالله ندا

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,017 مشاركة
  • الاسم الأول:عبدالله
  • اسم العائلة:ندا
  • البـلـد: Country Flag
  • المنصب الحالي:Technical Applications Manager

تاريخ المشاركة 09 May 2004 - 10:33 AM

مشكور اخي خالد علي هذا الكود
ولكن الا تعتقد انه لن يعمل بسبب table mutation
حيث انك تقوم بعمل سلكت من جدول يتم الادخال به
وشيئ اخر هذا الزناد علي ليس علي مستوي كل صف
معني ذلك انه من اول مره يمكن عمل ادخال لعدد لانهائي من الصفوف بدون ان يتحرك الزناد
لانه يعمل مره واحده فقط عند ارسال مجموعة جمل insert وليس for each row
الحل يكمن في وضع ريكور واحد فقط في الجدول ثم كتابة زناد يمنع عملية الادخال او الديليت
حيث يسمح ب التعديل فقط
create or replace trigger bef_ins
before inaert on khalid
for each row
raise_application_error(-20222,'You cants insert in this table') ;
end;

create or replace trigger bef_del
before delete on khalid
for each row
raise_application_error(-20222,'You cants delete from this table') ;
end;

او استخدام if inserting , if deleting , في تريجر واحد
او تريجر واحد علي مستوي الادخال و المسح
الحلول كثيرة
مع تمنياتي بالتوفيق

في زمننا هذا .........................
ليس هناك قلب ناصع البياض ...
ولا قلب قاتم السواد ...
ولكن دائما
BLACK&WHITE

 

مع تحياتي
عبدالله ندا

http://anada.4shared.com

abdallahnada@hotmail.com 


#6 عمرو

عمرو

    عضو

  • الأعضــاء
  • 47 مشاركة

تاريخ المشاركة 09 May 2004 - 12:24 PM

مشكورين إخوانى على هذه الإجابه
و انا اعتقد ان الكود الثانى يمشى مع إحتياجاتى

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


اخوكم عمرو