خودکار-کامیت (autocommit)
ویژگی «خودکار-کامیت (autocommit)» تعیین می کند تغییرات بانک اطلاعاتی فوراً ثبت شوند یا نه. «تراکنش (Transaction)» یعنی مجموعه تغییرات که یا کامل ثبت می شوند، یا هیچ کدام.
autocommit با زبان ساده
وقتی autocommit روشن است، هر دستور بلافاصله ثبت می شود. اما وقتی خاموش است، باید در پایان commit() بزنی تا همه تغییرات یک جا ثبت شوند. این شبیه ذخیره گروهی تکالیف است.
سبک شی ءگرا (Object Oriented)
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
exit();
}
// خاموش کردن autocommit
$mysqli->autocommit(false);
// چند درج نمونه
$mysqli->query("INSERT INTO Persons (FirstName,LastName,Age) VALUES ('Peter','Griffin',35)");
$mysqli->query("INSERT INTO Persons (FirstName,LastName,Age) VALUES ('Glenn','Quagmire',33)");
// ثبت تراکنش
if (!$mysqli->commit()) {
echo "Commit transaction failed";
exit();
}
$mysqli->close();
?>
سبک رویه ای (Procedural)
<?php
$con = mysqli_connect("localhost", "my_user", "my_password", "my_db");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}
// خاموش کردن autocommit
mysqli_autocommit($con, false);
// چند درج نمونه
mysqli_query($con, "INSERT INTO Persons (FirstName,LastName,Age) VALUES ('Peter','Griffin',35)");
mysqli_query($con, "INSERT INTO Persons (FirstName,LastName,Age) VALUES ('Glenn','Quagmire',33)");
// ثبت تراکنش
if (!mysqli_commit($con)) {
echo "Commit transaction failed";
exit();
}
mysqli_close($con);
?>
نکات مهم
نکته: autocommit(true) روشن می کند و هر تغییر را همان لحظه ثبت می کند.
نکته: autocommit(false) خاموش می کند و باید با commit ثبت کنی.
هشدار: اگر مشکلی پیش آمد، از rollback برای برگشت استفاده کن.
مراحل پیشنهادی کار
- اتصال بساز و خطا را بررسی کن.
- autocommit را خاموش کن.
- دستورات درج یا ویرایش را اجرا کن.
- در پایان، commit را اجرا کن.
جمع بندی سریع
- خودکار-کامیت برای ثبت فوری تغییرات است.
- خاموشش کن تا تراکنش گروهی داشته باشی.
- پس از موفقیت، commit را فراموش نکن.
- در خطاها، rollback کمک می کند.
برای مرور دوباره خودکار-کامیت همین صفحه را ذخیره کن. همچنین سری به commit و rollback بزن.