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

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

صورة
- - - - -

Create Table هل تقبل العمليات الحسابية


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

#1 obc88

obc88

    عضو

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

تاريخ المشاركة 03 August 2008 - 06:22 AM

لدي جدول به السعر والخصم والاجمالي هل يمكن عن طريق امر انشاء الجدول ادراج العملية الحسابية بها دون الحاجة لانشاء VIEW
وشكرا

#2 أبوعبدالملك المصري

أبوعبدالملك المصري

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

  • المجموعة الماسية
  • 453 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 03 August 2008 - 06:51 AM

السلام عليكم ورحمة الله وبركاته طبعا ممكن أن تنشئ جدول من جدول أخر عن طريق جملة Select
Create table test as select  so you can here to do what you want and no need to make view

تم التعديل بواسطة islamic_boy600, 03 August 2008 - 06:51 AM.

Mohamed Salah
Senior Oracle HRMS Techno Functional Consultant -Saudi Arabia

Ready to answer your questions just send me

Msalah600@gmail.com

My MediaFire Account

10.gif

صفحتي على الفيس بوك


مــن كنــوز الآيــات


#3 MMA

MMA

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

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 03 August 2008 - 07:06 AM

لدي جدول به السعر والخصم والاجمالي هل يمكن عن طريق امر انشاء الجدول ادراج العملية الحسابية بها دون الحاجة لانشاء VIEW


الأخ الكريم السعر والخصم حقول مخزنة ... أما الإجمالي حقل محسوب وليس مخزن ... يعني مينفعش نعمل حقل مخزن للإجماليات ( حسب تحليل النظم ) ... فلماذا ترغب في ذلك هل هناك سبب معين لذلك ؟؟؟

علي العموم سأعتبر أن هناك سبب خاص ... نفرض أن لديك جدول خاص بالمبيعات يدعي INVOICE . يحتوي علي 3 حقول الأول INVOICE_PRICE والثاني INVOICE_DISCOUNT والثالث INVOICE_SUM . يمكنك إنشاء TRIGGER مناسب علي مستوي الجدول INVOICE بحيث أن ينفذ هذه العملية بصفة مستمرة أثناء إجراء إدراج أو تحديث بالجدول كما يلي :


CREATE OR REPLACE TRIGGER TRG_BEFORE_INVOICE BEFORE INSERT OR UPDATE OR DELETE ON INVOICE
FOR EACH ROW
DECLARE
   FUNCTION GET_INVOICE_SUM RETURN NUMBER
   AS
	  ID_SUM   NUMBER(20,3);
   BEGIN
	  SELECT INVOICE_PRECE + (INVOICE_PRECE * INVOICE_DISCOUNT)
	  INTO ID_SUM
	  FROM INVOICE
	  WHERE INVOICE_ID = :NEW.INVOICE_ID;

	  RETURN S;
   END;
BEGIN
   IF(INSERTING OR UPDATING)THEN
	   :NEW.INVOICE_SUM := GET_INVOICE_SUM;
   END IF;
END;
/

وبكدة هيكون الحقل محدث تحديث تلقائي بصفة مستمرة وبدون أي مشاكل ... وإليك مثال أدق وابسط :

نفرض أن لدينا جدول يدعي EMP ... يحتوي علي علي حقلين ... الأول EMP_NAME والثاني EMP_NAME_COPY بحيث أن يتم إدراج آخر تحديث لحقل إسم الموظف ، أنظر كيف يتم ذلك :

CREATE OR REPLACE TRIGGER TRG_BEFORE_EMP BEFORE INSERT OR UPDATE OR DELETE ON EMP
FOR EACH ROW
BEGIN
   IF(INSERTING OR UPDATING)THEN
	   :NEW.EMP_NAME_COPY := :OLD.EMP_NAME;
   END IF;  
END;
/

......
.....
....
...
..
.


وهكذا




بالتوفيق

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#4 obc88

obc88

    عضو

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

تاريخ المشاركة 03 August 2008 - 06:55 PM

مشكورين على الإفادة البليغة ..
بصراحة أسرع رد ...
بارك الله فيكم.