کامیت (commit)
«کامیت تراکنش» یعنی ثبت نهایی تغییرات در دیتابیس. تراکنش (Transaction) مجموعه ای از عملیات وابسته است. با کامیت، همه باهم ذخیره می شوند. مثل دکمۀ ذخیره در بازی، که پیشرفتت را قطعی می کند.
تعریف و کاربرد
تابع commit() یا mysqli_commit() تراکنش جاری همان اتصال را ثبت می کند. معمولاً پس از خاموش کردن «خودکار-کامیت (Autocommit)» استفاده می شود.
سبک شی ءگرا (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();
}
$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();
}
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);
?>
گام های عملی
- اتصال بده و خطا را بررسی کن.
- خودکار-کامیت را خاموش کن.
- کوئری ها را اجرا کن.
- کامیت تراکنش را بزن.
نکته: اگر یکی از کوئری ها شکست خورد، به جای کامیت از رول بک (rollback) استفاده کن.
هشدار: پس از کامیت، تغییرات برنمی گردند. قبلش مطمئن شو.
جمع بندی سریع
- کامیت تراکنش ثبت نهایی تغییرات است.
- با خاموشی Autocommit کاربردی تر است.
- اشتباه شد؟ از rollback کمک بگیر.
- پس از موفقیت، اتصال را ببند.
برای مدیریت حالت خودکار ببین: خودکار-کامیت (autocommit). برای بستن اتصال هم سر بزن به بستن اتصال (close). اینجا نیز کامیت تراکنش را مرجع کن هنگام لینک دهی داخلی.