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

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

صورة
- - - - -

مساعدة في تريقر


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

#1 the past

the past

    عضو مميز

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

تاريخ المشاركة 30 May 2007 - 06:48 PM

يا شباب اريد ان اسألكم

عند جدولين m و b عملت تريقر عندما ادخل بيانات في m تدخل مباشرة في b

بس عندي مشكلة صغيرة عندي بيانات مكررة في جدول m ولا اريد ان تتكرر في جدول b

بمعنى عندما ادخل رقم 101 مثلا لاول مرة اريد هذه البيانات ان تدخل جدول b بس عندما ادخل هذا الرقم مرة اخرى في جدول m لا اريده ان يدخل في جدول b


بمعنى اريد جدول m تتكرر فيه البيانات بينما جدول b لا


يا شباب اريد الحل لاني تعبت وانا اكتب الكود لاحل هذه المشكلة ولكن بلا جدوى

ومشكوررين على الجهود الطيبة

#2 sky information

sky information

    عضو نشط

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

تاريخ المشاركة 30 May 2007 - 11:50 PM

المشكلة سهلة الحل فقط تابع معي خطوة بخطوة

لنفرض ان هذا الجدول هو M:
create table m(
m_id number(10),
m_name varchar2(10));

و أن الجدول الأخر هو B :
create table b(
b_id number(10),
b_name varchar2(10))

المطلوب أدخال البيانات نفسها التي في جدول M ولكن دون تكرار في جدول B .

1- نعمل function تقوم بفحص جدول B لكي لا تتكرر القيم :

create or replace function check_b(id_num number) return number
  is
  v_count number:=0;
  begin
  select count(*) into v_count from m
  where m_id=id_num;
  return(v_count+0);
  end;

2- نعمل trigger وندمج معاه function :
create or replace trigger insert_to_b
  before insert  on m
  for each row
  begin
  if check_b(:new.m_id)>=1 then
  dbms_output.put_line('you cant insert same record than once');
  else
 insert into b values (:new.m_id,:new.m_name);
 end if;
 end;

جرب الطريقة وخبرني ......................................

#3 the past

the past

    عضو مميز

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

تاريخ المشاركة 31 May 2007 - 09:10 PM

مشكور اخي الكريم على هذه الاكواد
وجزاك الله خير

بس لو سمحت اريدك ان تشرح لي الFUNCTION اذا تكرمت

#4 sky information

sky information

    عضو نشط

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

تاريخ المشاركة 31 May 2007 - 09:54 PM

حاضر راح اشرح الـ function :

تستقبل function بارميتر وهذا الباراميتر يتم تمريره من خلال trigger في السطر

if check_b(:new.m_id)>=1 then

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

فإذا رجعت function بقيمة معناه أنه يوجد سجل أو اكثر يحمل نفس قيمة البارميتر(مما يؤدي لعدم إدخال البيانات في جدول b )
أما إذا لم ترجع function بقيمة معناه انه لايوجد سجل في جدول m يحمل نفس قيمة البارميتر(مما يؤدي لإضافة البيانات في جدول b )

أتمنى أن تكون الفكرة واضحة ...................

#5 the past

the past

    عضو مميز

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

تاريخ المشاركة 01 June 2007 - 01:13 PM

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

#6 عبداللطيف

عبداللطيف

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

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

تاريخ المشاركة 01 June 2007 - 11:36 PM

الف شكر اخي sky information

#7 sky information

sky information

    عضو نشط

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

تاريخ المشاركة 02 June 2007 - 11:45 PM

شكر ا أخي عبد اللطيف لحضورك

#8 jamal_rrkk

jamal_rrkk

    عضو نشط

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

تاريخ المشاركة 03 June 2007 - 10:07 AM

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

اخي الكريم sky information

جزاك الله كل خير وبارك لك في اعمالك
قال تعالى :

{ وَمَا خَلَقْتُ الْجِنَّ وَالْإِنسَ إِلَّا لِيَعْبُدُونِ مَا أُرِيدُ مِنْهُم مِّن رِّزْقٍ

وَمَا أُرِيدُ أَن يُطْعِمُونِ إِنَّ اللَّهَ هُوَ الرَّزَّاقُ ذُو الْقُوَّةِ الْمتينُ }

[ الذاريات : 56 : 58 ]


{ وَأْمُرْ أَهْلَكَ بِالصَّلَاةِ وَاصْطَبِرْ عَلَيْهَا لَا نَسْأَلُكَ رِزْقًا

نَحْنُ نَرْزُقُكَ وَالْعَاقِبَةُ لِلتَّقْوَى }

[ طه : 131 ]




سبحان الله والحمد لله والله أكبر


http://tech.groups.y...and_Accounting/