วันจันทร์ที่ 2 กรกฎาคม พ.ศ. 2555

mysql-transaction-example

โปรแกรมที่มีคนใช้กันหลายคนจะมีโอกาสที่เกิดเหตุการณ์บันทึกข้อมูลผิดพลาดได้ง่าย
ให้ใช้ transaction ในการ commit ถ้าข้อมูลถูกต้องแล้ว เพื่อทำการบันทึกจริง
และ rollback เมื่อตรวจสอบแล้วพบว่าข้อมูลผิดพลาดเพื่อย้อนกลับไปเหมือนยังไม่เคยเกิดเหตุการ update ใดๆ

<?php
/*
CREATE TABLE `x` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(10) NOT NULL DEFAULT '0',
`qty` INT(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
)
ENGINE=InnoDB ROW_FORMAT=DEFAULT
*/


$rs = mysql_connect('localhost','root','');
mysql_select_db('xx');
mysql_query('set names utf8');

mysql_query('SET autocommit = 0');
mysql_query('START TRANSACTION');

mysql_query('update x set qty=qty-5');
$rs = mysql_query('select qty from x where id=1');
if (mysql_result($rs,0) > 0)
mysql_query('COMMIT');
else
mysql_query('ROLLBACK');
mysql_query('SET autocommit = 1');

?>

ไม่มีความคิดเห็น:

แสดงความคิดเห็น