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

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

صورة
- - - - -

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


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

#1 hrs

hrs

    عضو نشط

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

تاريخ المشاركة 12 August 2009 - 11:20 AM

السلام على اهل السلام تتذكرون هذا الخطأ يمكن عرفت سببه
http://www.araboug.o...topic=34724&hl=

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



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

ملفات مرفقة

  • ملف مرفق  B_copy.jpg   45.48كيلو   34 عدد مرات التحميل

تم التعديل بواسطة hrs, 12 August 2009 - 11:45 AM.


#2 abdu1_far

abdu1_far

    عضو نشط

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

تاريخ المشاركة 12 August 2009 - 11:36 AM

طيب عشان نقدر نساعد بجد بما انك عايز الحل ضروري ، ياريت تبعت الاسكريبت بتاع الجدول
وان شاء الله نقدر نساعدك
قال رسول الله صلى الله عليه وسلم "إن لله عز وجل عباداً أختصهم بقضاء حوائج الناس ، حببهم إلي الخير وحبب الخير إليهم
هم الاّمنون من عذاب الله يوم القيامة " أوكما قال صلى الله عليه وسلم

#3 hrs

hrs

    عضو نشط

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

تاريخ المشاركة 12 August 2009 - 11:46 AM

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

#4 abdu1_far

abdu1_far

    عضو نشط

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

تاريخ المشاركة 12 August 2009 - 12:34 PM

طيب ممكن تبعتي التيرجر كامل ، يعني بالهيدر بتاعه وكل حاجة
وياريت الاستراكشر بتاع الجدول
قال رسول الله صلى الله عليه وسلم "إن لله عز وجل عباداً أختصهم بقضاء حوائج الناس ، حببهم إلي الخير وحبب الخير إليهم
هم الاّمنون من عذاب الله يوم القيامة " أوكما قال صلى الله عليه وسلم

#5 hrs

hrs

    عضو نشط

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

تاريخ المشاركة 16 August 2009 - 10:19 AM

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;

#6 hrs

hrs

    عضو نشط

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

تاريخ المشاركة 16 August 2009 - 11:19 AM

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, 16 August 2009 - 11:21 AM.


#7 abdu1_far

abdu1_far

    عضو نشط

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

تاريخ المشاركة 16 August 2009 - 11:25 AM

لا الهيدر صح يافندم
كده معناه ان لو حصل اي انسرت او حذف او تعديل لأي كولم
قال رسول الله صلى الله عليه وسلم "إن لله عز وجل عباداً أختصهم بقضاء حوائج الناس ، حببهم إلي الخير وحبب الخير إليهم
هم الاّمنون من عذاب الله يوم القيامة " أوكما قال صلى الله عليه وسلم

#8 abdu1_far

abdu1_far

    عضو نشط

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

تاريخ المشاركة 16 August 2009 - 11:50 AM

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

ثانيا انا بس عند تحفظ على طريقة الكود ، يعني حضرتك بتكرري جملة الانسرت اكتر من مرة بنفس القيم ، الحاجة الوحيدة المتغيرة هي الحدث ، يعني انسرت 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;


سؤال اخير ... انت متأكده انك الوحيدة اللي شغاله على الجدول ده ؟؟!!!
قال رسول الله صلى الله عليه وسلم "إن لله عز وجل عباداً أختصهم بقضاء حوائج الناس ، حببهم إلي الخير وحبب الخير إليهم
هم الاّمنون من عذاب الله يوم القيامة " أوكما قال صلى الله عليه وسلم

#9 hrs

hrs

    عضو نشط

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

تاريخ المشاركة 18 August 2009 - 02:35 AM

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

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

#10 abdu1_far

abdu1_far

    عضو نشط

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

تاريخ المشاركة 18 August 2009 - 09:06 AM

لان ممكن يكون حد تاني (يوسر) أو مبرمج تاني ، شغال على نفس الجدول وعشان كده التيرجر بيتفير ويسجل ريكورد في الجدول
قال رسول الله صلى الله عليه وسلم "إن لله عز وجل عباداً أختصهم بقضاء حوائج الناس ، حببهم إلي الخير وحبب الخير إليهم
هم الاّمنون من عذاب الله يوم القيامة " أوكما قال صلى الله عليه وسلم

#11 سارة سعيد

سارة سعيد

    عضو

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

تاريخ المشاركة 24 August 2009 - 01:31 PM

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