Sunday, 28 October 2007

ADF BC: Trigger & Entities

เมื่อเราทำการ update, insert, delete ข้อมูล และต้องการ จัดการข้อมูล record ที่เราทำงานอยู่เพิ่มเติมทุกครั้งโดยอัตโนมัติ (คล้ายการทำงานของ trigger)
เช่น ต้องการคำนวนค่าจากข้อมูลที่ใส่เข้ามา ไปใส่ใน filed อื่น ของ record เดียวกันทุกครั้งที่มีการเพิ่มข้อมูล, ต้องการใส่ชื่อผู้ใช้ทีแก้ไขข้อมูล ทุกครั้งที่มีการแก้ไขข้อมูล

ของผมที่ใช้อยู่เป็นประจำ ก็จะเป็นการบันทึกข้อมูลของ user คนล่าสุดที่มา insert, update ข้อมูล record นั้นๆ โดยที่ไม่ต้องไปเขียน code ซ้ำ ในระดับ view object อีก

การจำลองการทำงาน Trigger ใน Entities ทำได้โดยการ owerwrite method doDML (int dml, TransactionEvent evt) เราสามารถเลือกได้ว่าจะให้ มันทำงานทุกครั้งที update , insert หรือ delete โดย check ค่า dml =>DML_INSERT, DML_UPDATE, DML_DELETE

ตัวอย่าง

  • เมื่อ Entity มีการ INSERT ข้อมูล dml = DML_INSERT จะทำการใส่ค่าให้ filed Flex1 มีค่าเท่ากับ ผลรวมของ filed Flex2 และ Flex3 ทุกครั้งที่มีการ insert

  • เมื่อ Entity มีการ UPDATE ข้อมูล dml = DML_UPDATE จะทำการ update filed companyId และ updatedBy ทุกครั้งที่มีการแก้ไขข้อมูล

No comments: