transection log กับความเข้าใจของผม
กระทู้เก่าบอร์ด อ.Yeadram

 2,084   3
URL.หัวข้อ / URL
transection log กับความเข้าใจของผม

ผมมีการย้าย TABLE A ไป B ด้วย DAO ระหว่างวน LOOP ย้ายนั้น
เกิดไฟดับ(สมมุติ) มีบาง RECORD ที่น่าจะย้ายไปแล้ว
บาง RECORD ก็อาจจะยัง มันจะเกิดอะไรขึ้นครับ
เห็น SQL SERVER ทั่วไปเขามีระบบ rollback มี TRANSECTION
LOG อะไรประมาณนั้น แล้ว ACCESS มีไหมครับ

ยังไม่เจอปัญหาครับ แต่คาดเดาเอาว่าอาจจะเกิด

3 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R02527
แก้ที่ผิดก่อน
1) เขียนว่า transaction (ทราน-แซก-ชั่น) ครับ
2) จุดประสงค์ที่ต้องการนี้ ไม่ได้เรียกว่า Transaction Log นะครับ   Transaction Log จะเป็นการเก็บการเปลี่ยนแปลงต่างๆที่เกิดขึ้นจาก transaction เพื่อนำมาสร้างข้อมูลให้เหมือนปัจจุบัน ในกรณีที่ฐานข้อมูลเกิดเสียหรือมีปัญหา   เราเรียกว่าเป็นการทำ Transaction Control จะเหมาะกว่า

การทำ Transaction Control นั้น ตัว JET Engine (ตัวจัดการฐานข้อมูลสำหรับไฟล์ .mdb) ก็รองรับครับ โดยครอบ transaction ต่างๆไว้ในคำสั่ง

BeginTransaction
กับ
CommitTransaction หรือ Rollback Transaction

ผลคือ ทุกๆสิ่งที่เกิดจาก transaction จะต้องทำได้หมด หรือไม่ก็ไม่ทำเลย อย่างใดอย่างหนึ่งเท่านั้น   จะไม่มีว่า อัพเดต/เพิ่ม/ลบ บางเรคอร์ดได้บ้าง ไม่ได้บ้าง เพื่อให้ integrity rule และ business rule ของข้อมูลถูกต้องสมบูรณ์เสมอ (ผมไม่ชอบแปล business rule เป็นคำว่า "กฏทางธุรกิจ" เพราแปลไปก็ไม่รู้เรื่อง แล้วรู้สึกจะแปลอย่างสุกเอาเผากินเสียมากกว่า ผมขอใช้คำว่า "เงื่อนไขระบบงาน" ดีกว่า)

จริงๆแล้ว มีคุณสมบัติ 4 อย่างที่รองรับให้การทำ transaction นั้นถูกต้อง เราเรียก??่อว่า ACID

A = Atomicity (การเปลี่ยนแปลงจะต้องเปลี่ยนแปลงทั้งหมดหรือไม่ก็ไม่เปลี่ยนแปลงเลย อย่างที่อธิบายข้างบน)
C = Consistency (Integrity ของข้อมูลเป็นหนึ่งในคุณสมบัติข้อนี้)
I = Isolation (ข้อมูลเมื่อผ่านการทำของ transaction แม้นว่าจะหลายคนทำ transaction พร้อมๆกัน แต่ระบบจะต้องสามารถทำให้เสมือนกับว่าแต่ละคน แยกกันทำ คนแรกเสร็จก่อนแล้วคนที่สองจึงทำต่อ
D = Durability (ระบบจะต้องคงทน จะต้องคงสถานะของข้อมูลไว้เป็น ก่อนหรือหลังการ commit/rollback ได้อย่างถูกต้องเหมือนเดิม ระบบจัดการฐานข้อมูลหลายๆตัว ใช้ Transaction Log เพื่อฟื้นฟูข้อมูลกลับมา)

ถ้าอยากอ่านรายละเอียด ลองค้นจาก Google ด้วยคำว่า transaction control, ACID transaction ได้ครับ
2 @R02528
ยากจริงๆ ครับ ขอไปอ่านก่อน และคงมีโอกาสมาถามอาจารย์อีกรอบ
ขอบคุณครับ
3 @R02530
ไม่ได้ยากหรอกครับ เรื่อง ACID เอามาโม้ให้ฟังเท่านั้น มันเป็นทฤษฏีทางฐานข้อมูล การปฏิบัติจริงเพียงครอบไว้ในคำสั่ง BeginTransaction กับ CommitTransaction หรือ RollbackTransaction เท่านั้น นอกนั้นตัวจัดการฐานข้อมูลทำให้เสร็จสรรพ ที่เหลือคือเราวางอัลกอริธึมของโปรแกรมให้ดีว่าตรงไหนจะ Commit ตรงไหนจะ Rollback อย่าปล่อยให้หลุดไปก็เท่านั้นครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2647s