PDA

View Full Version : شماره کانتر auto_increment ؟



ngmajid
شنبه 10 دی 1384, 09:00 صبح
سلام دوستان
من با دستور connect یا pconnect به بانک اطلاعاتی وصل می شم!
سپس دیتا بیس رو انتخاب می کنم. بعد از اون میخوام بلافاصله قبل از اینکه رکوردی رو وارد کنم
بفهمم کانتر auto_increment روی چه عددی است تا در رکور جدیدی که می خواهم وارد دیتابیس کنم
به شماره کانتر auto_increment یک عدد اضافه کنم و سپس در این رکورد جدید insert کنم؟
در حقیقت می خوام آخرین شماره auto_increment رو بدست بیاورم و بدونم شماره بعدی که درج میشه چنده ؟
اگه اساتید محترم راهنمایی کنن ممنون می شم ؟

moohssenn
شنبه 10 دی 1384, 16:11 عصر
سلام . منظورتون اینه که در یک جدول که میخوای اطلاعات بدی میخوای ببینی که آخرین رکورد چند بوده بعد شماره بعدی رو در یه فیلد از همون رکورد ذخیره کنی ؟

pooyesh
شنبه 10 دی 1384, 18:50 عصر
با سلام
سوال شما واضح نیست
چون دیتا بیس در فیلدی که auto_increment باشد به طور اتوماتیک رکورد بعدی عدد بعدی را می گیرد
اگه منظور شما بدست آوردن عدد در یک فیلد در رکورد اخر است که باید از query زیر برای بدست آوردن آخرین رکورد جدول بانک اطلاعاتی خودت استفاده کنی:
;"query1="SELECT * FROM `name_your_table` order by id desc limit 1
توجه داشته باشید که order by id desc که id بیان کننده نام فیلدی است که می خواهیم دسته بندی بر اساس آن انجام شود(auto_increment ) و desc ترتیب از آخر به اول را بیان می کند که اگر بجای آن از
asc استفاده کنید ترتیب از اول به آخر انجام می گیرد
و چون شما گفتید که آخرین فیلد را می خواهید باید پرسجوی خود را که از آخر شروع کردید محدود به عدد 1 کنید که این کار را با limit 1 انجام می دهیم
امید وارم که متوجه شده باشید و منظورتان را درست فهمیده باشم

ngmajid
دوشنبه 12 دی 1384, 11:29 صبح
من دنبال دستوری میگدم که بتونه شماره ذخیره شده در کانتر رو پیدا کنه یعنی اگر اخرین رکورد یا مجموع چند رکورد از آخر هم از جدول پاک شد. بازم بتونیم شماره بعدی رو که توسط auto increment گذاشته می شه تشخیص بدیم.
می بینید که با توجه به این مطلب نمی شه از روش بالا استفاده کرد.

moohssenn
دوشنبه 12 دی 1384, 20:41 عصر
اگه درست متوجه شده باشم :
شما باید یه فیلدو تو جدولت یونیک بگیری بعدشم هر بار بزرگترین رو انتخاب کرده و یکی به اون اضافه کنی
select max(FildName) from TableName
با دستور بالا بزرگترینو حساب کن و بعد یکی بهش اظافه کن تا دفعه بعد که خواستی یه رکورد اضافه کنی مقدار جدیدتو تو جدول بریزی
اما اگه دنبال یه کانتر اتوماتیک در کل بانکت هستی فکر میکنم mysql همچین چیزی نداره ولی توی oracle داریم . بقیه بانکهارم نمیدونم .

ngmajid
سه شنبه 13 دی 1384, 13:18 عصر
بله راه حل moohssenn آخرین راه حله
من یک ماهه که دنبال این مطلب بودم و فقط از همین روش جواب گرفتم ولی با این روش دیگه باید فیلد id را از حالت autoIncrement خارج نمود و خودتون دستی hd رو ثبت کنید از روش همین دوستمون.
من پیشنهاد می کنم که از شرکت طراح mysql درخواست کنیم تا این فرمان رو در جداول قرار بده.

shahramasp
سه شنبه 13 دی 1384, 13:52 عصر
دوست من برای بدست آوردن آخرین عدد ID یا به عبارتی بزرگترین عدد وارده شده در بخش ((به عنوان مثال فیلد Id)) این دسنور Sql مفید است
Select Max(Id) As Vol From tablename
این بزگترین یا آخرین عدد رو به شما میده

oxygenws
سه شنبه 13 دی 1384, 17:25 عصر
سوال شما و درخواستتون از mysql مشکل داره :)
دقیقا بگو می خوای چیکار کنی تا دقیق بهت توضیح بدم....

ngmajid
دوشنبه 19 دی 1384, 16:31 عصر
ضمن تشکر از همکاری شما
من نظرم اینه که از این سایت درخواست کنیم تا یه تابع معرفی کنه که بتونه مستقیما شماره ذخیره شده در کانتر autoincrement رو بدست بیاره یا اینکه ساختار جداول رو طوری قرار بده که بشه این شماره رو بدست آورد.
همین متشکرم

oxygenws
دوشنبه 19 دی 1384, 18:23 عصر
این سوال شما (یه تابع معرفی کنه که بتونه مستقیما شماره ذخیره شده در کانتر autoincrement رو بدست بیاره) قبلا پاسخ داده شده، جستجو کن.

tabib_m
سه شنبه 20 دی 1384, 15:38 عصر
http://www.barnamenevis.org/forum/showthread.php?t=25863