PDA

View Full Version : انجام چند کوئری متوالی سوال



stealer2007
جمعه 10 مهر 1388, 10:22 صبح
به نام خدا

سلام دوستان من

آقایون و خانوما من یه پیج ثبت نام دارم که وقتی کاربر ثبت نام می کنه این اطلاعات باید در چند تیبل مختلف ذخیره بشن بر این اساس من باید 4 تا INSERT انجام بدم و بین اونا هم SELECT داشته باشم فرض بگیرید به این صورت :

.......................Insert into tabel
...................................SELECT
...........................INSERT INTO
...........................INSERT INTO
...................................SELECT

می خواستم بدونم مشکلی به هم نمیزنه از نظر ذخیره سازی ؟

و سوال دیگه ای که دارم اینه که :

آیا میشه اینارو به صورت یک تراکنش ذخیره کرد؟
که اگه یکی از مراحل اجرا نشد بقیه مراحل خود به خود پاک بشن ؟

ممنون می شم اگه بهم جواب بدید.

با تشکر;

ALIREZA121
جمعه 10 مهر 1388, 10:37 صبح
این که میگی مشکلی به هم نمیزنه بستگی به چگونگی اجرای دستوراتت و اینکه آیا عمل درجی که یک جدول انجام میشود آیا در عمل درج در جدول دیگر وابستگی از لحاظ فیلد کلیدی ایجاد می کند یا نه پس از لحاظ ترتیب باید باید این مسئله را مورد توجه قرار داد در مورد تراکنش باز هم این مسئله وجود دارد.

s_salavati2002
جمعه 10 مهر 1388, 11:18 صبح
به نام خدا

سلام دوستان من

آقایون و خانوما من یه پیج ثبت نام دارم که وقتی کاربر ثبت نام می کنه این اطلاعات باید در چند تیبل مختلف ذخیره بشن بر این اساس من باید 4 تا INSERT انجام بدم و بین اونا هم SELECT داشته باشم فرض بگیرید به این صورت :

.......................Insert into tabel
...................................SELECT
...........................INSERT INTO
...........................INSERT INTO
...................................SELECT

می خواستم بدونم مشکلی به هم نمیزنه از نظر ذخیره سازی ؟

و سوال دیگه ای که دارم اینه که :

آیا میشه اینارو به صورت یک تراکنش ذخیره کرد؟
که اگه یکی از مراحل اجرا نشد بقیه مراحل خود به خود پاک بشن ؟

ممنون می شم اگه بهم جواب بدید.

با تشکر;
یکم بیشتر توضیح بده دقیقا چه اطلاعاتی کجا میرن و اینکه از select چه استفاده ای می کنی

stealer2007
جمعه 10 مهر 1388, 11:48 صبح
درود

ببینید من یه کاربر جدید ثبت می کنم به ID که به اون کاربر اختصاص داده میشه به صورت خودکار نیاز دارم که ببرم تو یه جدول دیگه و اون ذخیره کنم و یه چندتا مقدار به اون کاربر اختصاص بدم حالا من وقتی که اختصاص دادم چیزایی که بهش اختصاص داده شده خودش ID داره باید ID چیزایی که اختصاص داده شده رو بگیرم و ببرم تو یه جدول دیگه ذخیره کنم :عصبانی++::عصبانی++::عصبانی++:

حال بر این اساس یه INSERT اولیه داریم و یه SELECT که ID کاربر رو بگیره و چندتا INSERT و دوباره گرفتن ID اون اینزرت ها و دوباره اینزرت.:متفکر:

حالا می خواستم بدونم آیا مشکل ساز نمی شه ؟ و چطوری می تونم به صورت تراکنش درش بیارم؟

s_salavati2002
جمعه 10 مهر 1388, 13:42 عصر
چند تا نکته :
I. از راه خودت :
1.احتیاجی به select نداری و می تونی فیلدهای auto increment رو براحتی با

$id=mysql_insert_id();

دربیاری
2. می تونی از طریق

mysql_affected_rows();

ببینی که عملیات قبلی(آخرین عمل) انجام شده یا نه
3. در نهایت می تونی چک کنی که اگر عملیات کامل نشد همه اونارو پاک کنه

II. در موتور innodb:
1.می تونی با استفاده از دستورات mysql برای تراکنش استفاده کنی

START TRANSACTION, COMMIT, ROLLBACK

برای اطلاعات بیشتر :http://dev.mysql.com/doc/refman/5.0/en/commit.html
2. تک تک دستورات یک mysql_query احتیاج دارن
III.در موتور myisam
1. در این موتور تراکنش وجود ندارد و من راه خاصی بلد نیستم شاید با stored procedure بشه یه کارایی کرد...