بتاريخ: 1 سبتمبر 201510 سنة comment_265705 السلام عليكم أحاول أن أعمل trigger كل ما يدخل الشخص ايميل بشكل غير صحيح يظهر رساله للشخص. مثلا الايميل يجب ان يكون بهذا الشكل syntax :[email protected] عملت هذا الجدول: My table client : CLIENTNO CPOSTCODE CTELNO LICENSENO SEX OFFICENO CNAME EMAIL INSERT INTO client VALUES ('cd',100,955,57,'female',353,'aldi','[email protected]'); INSERT INTO client VALUES ('c',105,58,27,'male',3,'akju','[email protected]'); INSERT INTO client VALUES ('cdd',10,858,527,'msle',33,'ajgi','[email protected]'); INSERT INTO client VALUES ('cde',1050,818,6927,'female',443,'agf','[email protected]'); هذا trigger create or replace trigger emailadress2 before insert on client for each row begin IF (:new.email != '^[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}$ ') THEN DBMS_OUTPUT.PUT(' email validation is wrong' || :new.email); END IF; end; TRIGGER EMAILADRESS2 compiled المشكله لما اضفت صف مع ايميل بشكل خاطى لم يعمل trigger INSERT INTO client VALUES ('dd',100,5,4444,'female',93,'aljji','swhjhy.com'); لماذا ؟ وماهو شكل الصحيح لشرط syntax ? تم تعديل 1 سبتمبر 201510 سنة بواسطة وردة حمراء تقديم بلاغ
بتاريخ: 2 سبتمبر 201510 سنة comment_265709 CREATE OR REPLACE TRIGGER emailadress2 BEFORE INSERT ON client FOR EACH ROW BEGIN IF (NOT(REGEXP_INSTR(:new.email, '\w+@\w+(\.\w+)+') > 0 )) THEN DBMS_OUTPUT.PUT_LINE(' email validation is wrong' || :new.email); END IF; END; مع العلم أن المستخدم سيتمكن من إدخال الصف إلى الجدول ملاحظة : من الأفضل أن تضع ROLLBACK حتى لا يتمكن من إدخاله تقديم بلاغ
بتاريخ: 2 سبتمبر 201510 سنة comment_265713 IF :EMAIL_ITEM LIKE '%@%.COM' THEN NEXT_ITEM ; ELSE MESSAGE('ENTER EMAIL CORRECTLY') ; RAISE FORM_TRIGGER_FAILURE ; تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.