الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

تابع خطأ في التريجر لا اعرف سببه

Featured Replies

بتاريخ:

السلام على اهل السلام تتذكرون هذا الخطأ يمكن عرفت سببه
http://www.araboug.org/ib/index.php?showtopic=34724&hl=

هو موجود في الصورة المرفقة
حيث انني لم احدد الكولمنز فهل اذا لم احدد يعملها حتى لو لم يتغير ولا لا



اخ عبده انا حاطة الشرط اف ابديتيج

post-81266-1250066706_thumb.jpg

تم تعديل بواسطة hrs

بتاريخ:

طيب عشان نقدر نساعد بجد بما انك عايز الحل ضروري ، ياريت تبعت الاسكريبت بتاع الجدول
وان شاء الله نقدر نساعدك

بتاريخ:
  • كاتب الموضوع

ارفقت الصورة بنجاح

بتاريخ:

طيب ممكن تبعتي التيرجر كامل ، يعني بالهيدر بتاعه وكل حاجة
وياريت الاستراكشر بتاع الجدول

بتاريخ:
  • كاتب الموضوع

trigger

CREATE OR REPLACE TRIGGER "BKSDBA"."KEXPBOK_AUD" AFTER INSERT OR DELETE OR UPDATE ON BKSDBA.KEXPBOKT REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
declare
trm varchar2(50);
ip varchar2(50);
Begin

select UserEnv('TERMINAL'), Trim(Sys_Context('USERENV','IP_ADDRESS')) into trm , ip from dual;
If INSERTING Then
Insert Into Bks_KExpBokT
(Operation,UserName,Terminal,IPAddress,Timestamp,Old_ExpCde,New_ExpCde,
Old_ExpBok,New_ExpBok,Old_ExpDat,New_ExpDat,Old_ExpQty,New_ExpQty,Old_ExpLoc,
New_ExpLoc,Old_ExpOrdTyp,New_ExpOrdTyp,Old_ExpEmp,New_ExpEmp,Old_ExpApr,
New_ExpApr,Old_ExpAprDat,New_ExpAprDat,Old_ExpQtyRmn,New_ExpQtyRmn,Old_ExpTrfSts
,
New_ExpTrfSts,Old_ExpQtyRtn,New_ExpQtyRtn)
Values
('I',User,trm,ip,
SysDate, :Old.ExpCde, :New.ExpCde,
:Old.ExpBok,:New.ExpBok,:Old.ExpDat,:New.ExpDat,:Old.ExpQty,
:New.ExpQty,:Old.ExpLoc,:New.ExpLoc,:Old.ExpOrdTyp,:New.ExpOrdTyp,
:Old.ExpEmp,:New.ExpEmp,:Old.ExpApr,:New.ExpApr,:Old.ExpAprDat,
:New.ExpAprDat,:Old.ExpQtyRmn,:New.ExpQtyRmn,:Old.ExpTrfSts,:New.ExpTrfSts,
:Old.ExpQtyRtn,:New.ExpQtyRtn
);
ELSIF UPDATING THEN
Insert Into Bks_KExpBokT
(Operation,UserName,Terminal,IPAddress,Timestamp,Old_ExpCde,New_ExpCde,
Old_ExpBok,New_ExpBok,Old_ExpDat,New_ExpDat,Old_ExpQty,New_ExpQty,Old_ExpLoc,
New_ExpLoc,Old_ExpOrdTyp,New_ExpOrdTyp,Old_ExpEmp,New_ExpEmp,Old_ExpApr,
New_ExpApr,Old_ExpAprDat,New_ExpAprDat,Old_ExpQtyRmn,New_ExpQtyRmn,Old_ExpTrfSts
,
New_ExpTrfSts,Old_ExpQtyRtn,New_ExpQtyRtn)
Values
('U',User,trm,ip,
SysDate, :Old.ExpCde, :New.ExpCde,
:Old.ExpBok,:New.ExpBok,:Old.ExpDat,:New.ExpDat,:Old.ExpQty,
:New.ExpQty,:Old.ExpLoc,:New.ExpLoc,:Old.ExpOrdTyp,:New.ExpOrdTyp,
:Old.ExpEmp,:New.ExpEmp,:Old.ExpApr,:New.ExpApr,:Old.ExpAprDat,
:New.ExpAprDat,:Old.ExpQtyRmn,:New.ExpQtyRmn,:Old.ExpTrfSts,:New.ExpTrfSts,
:Old.ExpQtyRtn,:New.ExpQtyRtn
);
ELSIF DELETING THEN
Insert Into Bks_KExpBokT
(Operation,UserName,Terminal,IPAddress,Timestamp,Old_ExpCde,New_ExpCde,
Old_ExpBok,New_ExpBok,Old_ExpDat,New_ExpDat,Old_ExpQty,New_ExpQty,Old_ExpLoc,
New_ExpLoc,Old_ExpOrdTyp,New_ExpOrdTyp,Old_ExpEmp,New_ExpEmp,Old_ExpApr,
New_ExpApr,Old_ExpAprDat,New_ExpAprDat,Old_ExpQtyRmn,New_ExpQtyRmn,Old_ExpTrfSts
,
New_ExpTrfSts,Old_ExpQtyRtn,New_ExpQtyRtn)
Values
('D',User,trm,ip,
SysDate, :Old.ExpCde, :New.ExpCde,
:Old.ExpBok,:New.ExpBok,:Old.ExpDat,:New.ExpDat,:Old.ExpQty,
:New.ExpQty,:Old.ExpLoc,:New.ExpLoc,:Old.ExpOrdTyp,:New.ExpOrdTyp,
:Old.ExpEmp,:New.ExpEmp,:Old.ExpApr,:New.ExpApr,:Old.ExpAprDat,
:New.ExpAprDat,:Old.ExpQtyRmn,:New.ExpQtyRmn,:Old.ExpTrfSts,:New.ExpTrfSts,
:Old.ExpQtyRtn,:New.ExpQtyRtn
);
End If;
End;

-------------------------------------------------------------------------------------
TABLE


create table BKSDBA.KEXPBOKT
(
EXPCDE VARCHAR2(6) not null,
EXPBOK VARCHAR2(13) not null,
EXPDAT DATE not null,
EXPQTY NUMBER(5) not null,
EXPQTYRMN NUMBER(5) not null,
EXPLOC VARCHAR2(1) not null,
EXPORDTYP VARCHAR2(2) not null,
EXPEMP CHAR(9),
EXPAPR VARCHAR2(1),
EXPAPRDAT DATE,
EXPTRFSTS VARCHAR2(1),
EXPQTYRTN NUMBER(5),
EXPCRSINL VARCHAR2(3),
EXPCRSNBR VARCHAR2(3)
)
tablespace BKSTBS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 5M
minextents 1
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
alter table BKSDBA.KEXPBOKT
add constraint PK_EXPCDE_BOK primary key (EXPCDE, EXPBOK)
using index
tablespace BKSNDX
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 5M
minextents 1
maxextents unlimited
);
alter table BKSDBA.KEXPBOKT
add constraint EXPCRS_FK foreign key (EXPBOK, EXPCRSINL, EXPCRSNBR)
references BKSDBA.KCRSBOKT (CRSBOK, CRSINL, CRSNBR);
alter table BKSDBA.KEXPBOKT
add constraint FK_EXPORDTYP foreign key (EXPORDTYP)
references BKSDBA.KORDTYPCDET (ORDTYPCDE);
alter table BKSDBA.KEXPBOKT
add constraint FK_SHLFDTA_BOKBSC foreign key (EXPBOK)
references BKSDBA.KBOKBSCT (BOKCDE);
-- Create/Recreate indexes
create index BKSDBA.IDX$$_4A750003 on BKSDBA.KEXPBOKT (EXPBOK, EXPLOC, EXPORDTYP)
tablespace BKSTBS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Grant/Revoke object privileges
grant select on BKSDBA.KEXPBOKT to BKSVIEW_ROLE;

بتاريخ:
  • كاتب الموضوع
trigger

CREATE OR REPLACE TRIGGER "BKSDBA"."KEXPBOK_AUD" AFTER INSERT OR DELETE OR UPDATE ON BKSDBA.KEXPBOKT REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
declare
trm varchar2(50);
ip varchar2(50);

يعني هل صح اني اقول في الداتا بيز تريجر UPDATE ON BKSDBA.KEXPBOKT لكي اعمل تريسنغ على كل الكولمنز ولا لازم اذكر كل الكولمنز

تم تعديل بواسطة hrs

بتاريخ:

لا الهيدر صح يافندم
كده معناه ان لو حصل اي انسرت او حذف او تعديل لأي كولم

بتاريخ:

لحد الان انا مش شايف اي سبب منطقي ، انه يضيف لوحده
هو هيضيف بمجرد ما حضرتك تعملي أي ترانزكشن على الجدول سواء إذا كان حذف واضافة اوتعديل
لكن انه يشتغل لوحده ده غريبة اوي ومش لاقي لها اي سبب منطقي

ثانيا انا بس عند تحفظ على طريقة الكود ، يعني حضرتك بتكرري جملة الانسرت اكتر من مرة بنفس القيم ، الحاجة الوحيدة المتغيرة هي الحدث ، يعني انسرت I ، ابديت U ، حذف D

يبقى شكل الكود كده

CREATE OR REPLACE TRIGGER "BKSDBA"."KEXPBOK_AUD"
  AFTER INSERT OR DELETE OR UPDATE ON bksdba.kexpbokt
  REFERENCING NEW AS NEW OLD AS OLD
  FOR EACH ROW
DECLARE
  trm          VARCHAR2 (50);
  ip           VARCHAR2 (50);
  v_operator   VARCHAR2 (1);
BEGIN SELECT USERENV ('TERMINAL'), TRIM (SYS_CONTEXT ('USERENV', 'IP_ADDRESS'))
    INTO trm, ip
    FROM DUAL; IF INSERTING
  THEN
     v_operator := 'I';
  ELSIF UPDATING
  THEN
     v_operator := 'U';
  ELSE
     v_operator := 'D';
  END IF;

  INSERT INTO bks_kexpbokt
              (operation, username, terminal, ipaddress, TIMESTAMP,
               old_expcde, new_expcde, old_expbok, new_expbok,
               old_expdat, new_expdat, old_expqty, new_expqty,
               old_exploc, new_exploc, old_expordtyp, new_expordtyp,
               old_expemp, new_expemp, old_expapr, new_expapr,
               old_expaprdat, new_expaprdat, old_expqtyrmn,
               new_expqtyrmn, old_exptrfsts, new_exptrfsts,
               old_expqtyrtn, new_expqtyrtn
              )
       VALUES (v_operator, USER, trm, ip, SYSDATE,
               :OLD.expcde, :NEW.expcde, :OLD.expbok, :NEW.expbok,
               :OLD.expdat, :NEW.expdat, :OLD.expqty, :NEW.expqty,
               :OLD.exploc, :NEW.exploc, :OLD.expordtyp, :NEW.expordtyp,
               :OLD.expemp, :NEW.expemp, :OLD.expapr, :NEW.expapr,
               :OLD.expaprdat, :NEW.expaprdat, :OLD.expqtyrmn,
               :NEW.expqtyrmn, :OLD.exptrfsts, :NEW.exptrfsts,
               :OLD.expqtyrtn, :NEW.expqtyrtn
              );
END;



سؤال اخير ... انت متأكده انك الوحيدة اللي شغاله على الجدول ده ؟؟!!!

بتاريخ:
  • كاتب الموضوع

تسلم اخ عبدو .. فعلا طريقتك احسن بجرب احطها .. ماأدري كيف راحت عن بالي ..

واش المغزى من السؤال لأني مافهمتش قصدك
....

بتاريخ:

لان ممكن يكون حد تاني (يوسر) أو مبرمج تاني ، شغال على نفس الجدول وعشان كده التيرجر بيتفير ويسجل ريكورد في الجدول

بتاريخ:

EUROSOFT يوروسوفت لتكنولوجيا المعلومات
ORACLE تعلن عن الدورات الرمضانية
خصم على جميع الدورات المقدمة فى اوراكل 20%
يبدء الحجز من 23/8/2009 وحتى 12/9/2009
للحجز اتصل على 33367306 / 0105014683 / 0173964788




ORACLE Developer 10g

ORCALE SQL 10 g
ORCALE PL 10 g
ORCALE Forms 10 g
ORCALE Reports 10 g
Project
دبلومه يوروسوفت

ORACLE
ORACLE SQL 10g - ORACLE PL/sql 10g
JAVA
Object Oriented Programming
J2SE - J2EE - Servlet - JSP - JDBC
نظرة عامة على EJB – hibernate – Ajax – XML –
نظرة عامة على DREAMWEVER






oracle DBA
oracle SQL 10g
oracle workshop 1 oracle workshop 2

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.