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

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


hrs

Recommended Posts

السلام على اهل السلام تتذكرون هذا الخطأ يمكن عرفت سببه
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

رابط هذا التعليق
شارك

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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