ทำไมต้องทำ Transaction?
เรื่องของ Transaction นั้นเป็นเรื่องที่มีมาค่อนข้างนานพอสมควร ข้อดีของการทำ Transaction คือ ในกรณีที่มีการทำงานกับคำสั่งในการประมวลผลฐานข้อมูลหลายๆ คำสั่ง ซึ่งอาจมีบางคำสั่งที่ไม่สามารถทำงานได้ หากเราเขียนโปรแกรมแบบเดิมก็จะมีการกระทำการกับคำสั่งมาเรื่อยๆ จนเกิด error ในคำสั่งที่ไม่สามารถทำงานได้ ตายละ เมื่อเกิด error แล้วตัวที่เราได้ทำไปแล้วจะย้อนกลับได้ หากต้องการย้อนกลับก็ต้องเขียนโปรแกรมตรวจสอบกันวุ่นวายเลยทีเดียว
ทางแก้ไขของเหตุการณ์เช่นนี้คือการทำ Transaction เพื่อตรวจสอบว่าคำสั่งทุกคำสั่งจะถูกทำงานได้อย่างปลอดภัย หากมีคำสั่งไหนที่ไม่สามารถทำงานได้หรือเกิด error บางอย่าง ก็จะ rollBack() กลับไปยังจุดเริ่มต้น ทำให้ระบบมีความปลอดภัย และมีความถูกต้องของข้อมูลมากยิ่งขึ้น
รูปแบบใน Yii Framework 2
คำสั่งของ Transaction ใน Yii Framework 2 นั้นสามารถทำได้อย่างง่ายดาย โดยมี try{}catch(){} เข้ามาช่วยดังนี้
if($model->load(Yii::$app->request->post() && $model2->load(Yii::$app->request->post())
{
$transaction = Yii::$app->db->beginTransaction();
try {
$connection->createCommand($sql1)->execute();
$connection->createCommand($sql2)->execute();
//.... other SQL executions
$model->save();
$model2->model_id = $model->id;
$model2->save();
$transaction->commit();
return $this->redirect(['index']);
} catch (\Exception $e) {
$transaction->rollBack();
throw $e;
}
}
สามารถดูรายละเอียดเพิ่มเติมได้ที่
http://www.yiiframework.com/doc-2.0/yii-db-transaction.html
สรุป
Transaction ช่วยให้เราสามารถพัฒนา Web Application ให้มีความเป็นมืออาชีพมากยิ่งขึ้นและที่สำคัญทำให้ความถูกต้องของข้อมูลมีมากขึ้นอีกด้วย
ความคิดเห็น