PDA

View Full Version : استفاده از Mysql_commit



Mohajerx
سه شنبه 30 بهمن 1386, 01:48 صبح
از بین دو یا تعداد کوئری بیشتری میخواستم که
به هر دلیلی که یک کوئری اجرا نشود هیچ عملیاتی
هم بر روی دیتابیس انجام نشود مگراینکه این
اطمینان وجود داشته باشه که کوئری ها بصورت کامل
اجرا شده اند.
چه راه های مطمئنی رو میشه برای اینکار به کار گرفت.
نوع جدول هم MyIsam هست.

به چه صورت میشه در php از mysql commit استفاده کرد
بطوری اگر از بین چند کوئری یک مورد هم اجرا نشود
بقیه مراحل کوئری ها هم هیچ عمل انجام شده ای روی دیتابیس
نداشته باشند.

یک نمونه از نحوه بکارگیری این تابع مثلا برای
اجرای دو کوئری را میخواستم.

با سپاس

reza_rad
سه شنبه 30 بهمن 1386, 08:09 صبح
بهتره با توابع خود MySQL اینکار رو انجام بدید.
MYSQL از transaction (http://dev.mysql.com/books/mysqlpress/mysql-tutorial/ch10.html) پشتیبانی می کنه.
مثال:

start transaction;
update account set balance = balance - 1000 where number = 2;
update account set balance = balance + 1000 where number = 1;
commit;

Mohajerx
سه شنبه 30 بهمن 1386, 16:46 عصر
روی تیبل های Myisam هم اجرا میشود ؟

reza_rad
سه شنبه 30 بهمن 1386, 17:30 عصر
بستگی به ورژن MySQL شما داره جدولهای MyIASM قبل از ورژن 5 rollback رو ساپورت نمی کنند در نتیجه با ورژن های قبل از 5 نمیشه.

mehdi_kamari
چهارشنبه 01 اسفند 1386, 23:21 عصر
دوستان کمی میشه در مورد Mysql_commit توضیح بدین

reza_rad
پنج شنبه 02 اسفند 1386, 09:38 صبح
دوستان کمی میشه در مورد Mysql_commit توضیح بدین
mysql_commit() (http://dev.mysql.com/doc/refman/5.0/en/mysql-commit.html)

Mohajerx
دوشنبه 02 اردیبهشت 1387, 01:51 صبح
با توجه به اینکه در پروژه من لازم در پردازشی که صورت میگیره
اطلاعات به 3 دیتابیس مختلف وارد بشوند که MyIsam هستند به نظرتون چقدر
این ریسک میتونه وجود داشته باشه که مثلا به یکی کلا وارد نشود و به چه دلایلی؟
و اینکه اصلا چنین چیزی هست که حالا به هر دلیلی از طرف کاربر
و اینترنت کاربر بشه اختلال در این روند ایجاد کرد ؟

در واقع به اینصورت هست
mysql_query1
mysql_query2
mysql_query3

حالا اگر یکی از این کوئری ها که برای ورود اطلاعات هست
بطور کامل اجرا نشه میتونه اختلال های زیادی رو ایجاد کنه
و لازم حتما مطمئن باشیم اطلاعات به هر سه وارد میشه بطور
دقیق و همزمان. (هر کدام در یک دیتابیس هستند روی یک سرور)

Mohajerx
سه شنبه 03 اردیبهشت 1387, 22:38 عصر
پیشنهادی دارید که عمل نوشته شده در پست بالا
به درستی و با دقت کامل صورت گیرد؟

Mohajerx
دوشنبه 30 اردیبهشت 1387, 05:22 صبح
پیشنهاد مناسبی دارید ؟
کوئری ها به دیتابیس های مختلف حتما باید ارسال شوند. (همه باهم)

mehran_337
دوشنبه 30 اردیبهشت 1387, 08:11 صبح
متغیری داشته باشید که پس از اتمام کوئری ها آپدیت شود . در ابتدای هر کوئری متغیر ( می تواند فیلدی درون جدول تک رکوردی باشد یا در فایل ذخیره شود) چک شود و اگر True نبود پس بهتراست الگوریتمی بنویسید که اطلاعات را حذف کرده و مجدد آپدیت کند .