PDA

View Full Version : چطور می تونم دو کوئری رو بصورت همزمان اجرا کنم ؟



phpweb
سه شنبه 19 بهمن 1389, 12:02 عصر
چطور می تونم دو کوئری رو بصورت همزمان اجرا کنم ؟

مثلا مقادیر رو از یک جدول بازیابی کنم و همزمان جدول دیگه رو با مقادیر تازه آپدیت کنم؟

یا

مقادیری به یک جدول اضافه کنم و همزمان مقادیر یک جدول رو دلیت کنم؟

Mr.Moghadam
سه شنبه 19 بهمن 1389, 12:20 عصر
سلام
فکر کنم اینجوری بشه(اگر منظورت همین بوده)


$res1 = mysql_query("INSERT INTO $tbl1 VALUES ($value)");
$res2= mysql_query("UPDATE $tbl2 SET $field = $value");

MMSHFE
سه شنبه 19 بهمن 1389, 13:31 عصر
با سلام، دوست گرامي بصورت كاملاً همزمان كه نميشه چون MySQL و كلاً هر DBMS ديگه موقع اجراي يك Query روي جداول قفل ميگذاره تا براي مثال، در همون موقع كه دارين عمل ويرايش يك ركورد رو انجام ميدين، يك كاربر ديگه نياد و حذفش كنه! بنابراين بايد Queryها رو به ترتيب اجرا كنيد.
موفق و مؤيد باشيد.

sattaryekta
سه شنبه 19 بهمن 1389, 14:21 عصر
برای این کار میتونی از trigger استفاده کنی! در واقع همزمان نمیشه! ولی سرعت بسیار بالایی داره که میشه گفت تقریبا همزمان هست. در ضمن کلاس کدت را هم خیلی بالا میبره!

phpweb
سه شنبه 19 بهمن 1389, 14:56 عصر
سلام
فکر کنم اینجوری بشه(اگر منظورت همین بوده)


$res1 = mysql_query("INSERT INTO $tbl1 VALUES ($value)");
$res2= mysql_query("UPDATE $tbl2 SET $field = $value");


اینکه همون روش ساده هست و کوئری ها رو یکی بعد از دیگری ارسال می کنیم.

با این روش امکانش هست که به هر دلیلی بعد از اجرای کوئری اول، سیستم خاموش بشه و کوئری دوم اجرا نشه.

در این مورد چی می گید؟

phpweb
سه شنبه 19 بهمن 1389, 14:57 عصر
برای این کار میتونی از trigger استفاده کنی! در واقع همزمان نمیشه! ولی سرعت بسیار بالایی داره که میشه گفت تقریبا همزمان هست. در ضمن کلاس کدت را هم خیلی بالا میبره!

یه مثال در مورد trigger می زنید؟

phpweb
سه شنبه 19 بهمن 1389, 14:58 عصر
با سلام، دوست گرامي بصورت كاملاً همزمان كه نميشه چون MySQL و كلاً هر DBMS ديگه موقع اجراي يك Query روي جداول قفل ميگذاره تا براي مثال، در همون موقع كه دارين عمل ويرايش يك ركورد رو انجام ميدين، يك كاربر ديگه نياد و حذفش كنه! بنابراين بايد Queryها رو به ترتيب اجرا كنيد.
موفق و مؤيد باشيد.

وقتی کاربر بخواد همزمان به چند جدول دسترسی پیدا کنه و محتویات این جداول رو حذف و یا تغییر بده باز هم پایگاه داده جلوی کار رو می گیره؟

MSN_Issue
سه شنبه 19 بهمن 1389, 16:34 عصر
اینکه همون روش ساده هست و کوئری ها رو یکی بعد از دیگری ارسال می کنیم.

با این روش امکانش هست که به هر دلیلی بعد از اجرای کوئری اول، سیستم خاموش بشه و کوئری دوم اجرا نشه.

در این مورد چی می گید؟

دوست عزیز شما به هر طریقی که کار کنید کوئری هاتون یکی یکی اجرا میشه ... !
اصلا این یک اصل توی طراحی سیستم مدیریت پایگاه داده هست ... !

MMSHFE
سه شنبه 19 بهمن 1389, 20:15 عصر
وقتی کاربر بخواد همزمان به چند جدول دسترسی پیدا کنه و محتویات این جداول رو حذف و یا تغییر بده باز هم پایگاه داده جلوی کار رو می گیره؟
با سلام، بله و Query ها رو به ترتیب اجرا میکنه. خودتون قضاوت کنید: میخواین یک رکورد رو ویرایش کنید و همون موقع یک کاربر دیگه اون رو حذف میکنه! اونوقت MySQL چه کاری باید انجام بده و چه نتیجه ای نشون بده؟ کدوم رو اول اجرا کنه؟ همزمان که نمیشه هم ویرایش کرد هم حذف! موضوع خیلی ساده است. Query ها به ترتیب اجرا میشن ولی اینقدر سرعت بالاست که به نظر میاد همزمان کار میکنن. ضمناً Trigger که دوستمون گفتن هم به این راحتی نیست و برای حالتهای کلی به کار میره. مثلاً هر موقع یک رکورد از فلان جدول حذف شد، یک رکورد به جدول دیگه اضافه بشه (این کار هم بعد از اجرای شرط یعنی اجرا شدن Query اول) اتفاق میفته و همزمان نیست. با کمک Trigger تنها مزیتی که دارید اینه که نمیخواد خودتون دستور دوم رو اجرا کنید و به محض رویدادن شرط در MySQL دستور مشخص شده اجرا خواهد شد.
موفق و مؤید باشید.

sattaryekta
چهارشنبه 20 بهمن 1389, 07:45 صبح
یه مثال در مورد trigger می زنید؟


CREATE TRIGGER test BEFORE INSERT ON tbl
FOR EACH ROW BEGIN
INSERT INTO tbl2 VALUES (val)
END;

این یک تریگر بسیار ساده برای Insert هست که میشه گفت تقریبا همزمان اجرا میشه!

sattaryekta
چهارشنبه 20 بهمن 1389, 07:47 صبح
دوست عزیز شما به هر طریقی که کار کنید کوئری هاتون یکی یکی اجرا میشه ... !
اصلا این یک اصل توی طراحی سیستم مدیریت پایگاه داده هست ... !

نخیر!
mysql قابلیت تراکنش داره. یعنی یا همش یا هیچکدوم!

phpweb
چهارشنبه 20 بهمن 1389, 10:55 صبح
نخیر!
mysql قابلیت تراکنش داره. یعنی یا همش یا هیچکدوم!

من هم با نظر شما موافقم. امکانش هست یه منبع فارسی که این نوع کوئری ها رو آموزش می ده بهم معرفی کنید؟

sattaryekta
چهارشنبه 20 بهمن 1389, 11:07 صبح
امکانش هست یه منبع فارسی که این نوع کوئری ها رو آموزش می ده بهم معرفی کنید؟
منبع من سایت MySQL هست.
منابع فارسی اغلب در مورد MS SQL Server توضیح دادند که البته PHP اون را هم Support می کنه!