PDA

View Full Version : سوال: دادن id اتوماتیک به فیلد



sqlcloner
جمعه 28 فروردین 1394, 10:35 صبح
با سلام خدمت تمام دوستان . ما چطور میتونیم هر بار که اطلاعات را ذخیره کردیم . یه id به صورت اتوماتیک به اونا نسبت بدهیم تا برای گزارش گیری و ویرایش و ... راحت بتو نیم عمل کنیم . لطفا اگه میشه کدش را در vb.net و sql قرار بدید . از الان ممنون .

systam
جمعه 28 فروردین 1394, 10:56 صبح
سلام
میتونی با هر باری که میای اطلاعات رو در بانک ذخیره کنی بیای تعداد رکورد های رو بدست بیاری یکی بهش اضافه کنی ثبت کنی
موفق باشی
یا علی

محمد آشتیانی
جمعه 28 فروردین 1394, 11:38 صبح
سلام
شما وقتی داری جدولت رو طراحی می کنی ، تو خصوصیات فیلدی که میخوای به صورت ID باشه ، نوع فیلد رو int تعریف کن و گزینه Is Identity رو برابر True قرار بده ، به این ترتیب SqlServer خودش بصورت اتوماتیک فیلد ID رو مقدار دهی میکنه.
در زیر مجموعه Is Identity ، دو گزینه دیگه هم داری به نام های Identity Increment که مشخص می کنه با ثبت رکورد جدید ، چه مقدار به آخرین ID افزوده بشه و Identity Seed که مشخص میکنه مقدار اولیه فیلد ID از چه شماره ای شروع بشه.
(در تصویر زیر با کادر قرمز رنگ مشخص کردم که این آیتم ها رو کجا میشه پیدا کرد)

130389

موفق باشید.

systam
جمعه 28 فروردین 1394, 12:52 عصر
در زیر مجموعه Is Identity ، دو گزینه دیگه هم داری به نام های Identity Increment که مشخص می کنه با ثبت رکورد جدید ، چه مقدار به آخرین ID افزوده بشه و Identity Seed که مشخص میکنه مقدار اولیه فیلد ID از چه شماره ای شروع بشه.
سلام
استاد بعد اون فیلد میشه ویرایشش کرد

sqlcloner
جمعه 28 فروردین 1394, 13:59 عصر
سلام
شما وقتی داری جدولت رو طراحی می کنی ، تو خصوصیات فیلدی که میخوای به صورت ID باشه ، نوع فیلد رو int تعریف کن و گزینه Is Identity رو برابر True قرار بده ، به این ترتیب SqlServer خودش بصورت اتوماتیک فیلد ID رو مقدار دهی میکنه.
در زیر مجموعه Is Identity ، دو گزینه دیگه هم داری به نام های Identity Increment که مشخص می کنه با ثبت رکورد جدید ، چه مقدار به آخرین ID افزوده بشه و Identity Seed که مشخص میکنه مقدار اولیه فیلد ID از چه شماره ای شروع بشه.
(در تصویر زیر با کادر قرمز رنگ مشخص کردم که این آیتم ها رو کجا میشه پیدا کرد)

130389

موفق باشید.
سلام مهندس . این عکس که گذاشتید تو sqlserver r2 2008 یه گزینه هست . به نام identity column که اونو باید بزاری نام فیلد که id هست . آیا این گزینه همونه . مرسی

محمد آشتیانی
جمعه 28 فروردین 1394, 14:08 عصر
سلام



استاد بعد اون فیلد میشه ویرایشش کرد
خیر نمیشه ویرایشش کرد ، نباید هم بشه ، این ایده اشتباهی هست که برخی دوستان ، فیلد Identity رو میخوان ویرایش کنن




سلام مهندس . این عکس که گذاشتید تو sqlserver r2 2008 یه گزینه هست . به نام identity column که اونو باید بزاری نام فیلد که id هست . آیا این گزینه همونه . مرسی
تو محیط Sql Server Management Studio هم عنوانش دقیقا همین هست دوست عزیز

عکس زیر رو ببینید
130392


موفق باشید.

sqlcloner
جمعه 28 فروردین 1394, 14:15 عصر
واقعا ممنون . بعد دستور هر بار که اجرا بشه . خودش به آیدی یکی اضافه میکنه . یعنی کد نویسی لازم نیست ؟

محمد آشتیانی
جمعه 28 فروردین 1394, 14:25 عصر
بله دوست عزیز ، وقتی یک ستون به این صورت تعریف میشه SqlServer خودش اون رو مقدار دهی میکنه
یعنی داخل کوئری Insert اصلا نباید اسم این فیلد رو بنویسید و همچنین در کوئری Update هم نمیتونید مقدارش رو تغییر بدید.



موفق باشید

harash
شنبه 12 اردیبهشت 1394, 00:13 صبح
سلام
البته اینطور هم نیست که اصلا نشه مقدار آی دی اتوماتیک اس کیو ال را تغییر داد میشه:لبخند:
و اگر بشه میشه همون شماره ردیف که مجبوری برای دیتا گریدویو یا دیتاویو کد بنویسی
چون بزرگترین اشکال شماره اتوماتیک اینه که با حذف شدن رکوردی در وسط دیتا شماره تسلسل را از دست میده
و جای خالی میندازه و این اشکال بوجود میاره وگرنه بهترین واسط هستش برای جستجو-حذف-آپدیت رکوردها
که کار برنامه نویس را خیلی راحت میکنه.:اشتباه: چقدر حرف زدم:خجالت: موفق باشید

بیتا حکمت
شنبه 12 اردیبهشت 1394, 00:27 صبح
سلام
البته اینطور هم نیست که اصلا نشه مقدار آی دی اتوماتیک اس کیو ال را تغییر داد میشه:لبخند:



سلام . دقیق متوجه منظورتون نشدم . ولی جمله ای که گفتین صحیح نیست . ایدی اتوماتیک رو نمیشه تغییر داد .
همین الان تستش کردم .

محمد آشتیانی
شنبه 12 اردیبهشت 1394, 03:08 صبح
سلام
البته اینطور هم نیست که اصلا نشه مقدار آی دی اتوماتیک اس کیو ال را تغییر داد میشه:لبخند:
و اگر بشه میشه همون شماره ردیف که مجبوری برای دیتا گریدویو یا دیتاویو کد بنویسی
چون بزرگترین اشکال شماره اتوماتیک اینه که با حذف شدن رکوردی در وسط دیتا شماره تسلسل را از دست میده
و جای خالی میندازه و این اشکال بوجود میاره وگرنه بهترین واسط هستش برای جستجو-حذف-آپدیت رکوردها
که کار برنامه نویس را خیلی راحت میکنه.:اشتباه: چقدر حرف زدم:خجالت: موفق باشید

سلام
دوست عزیز چرا اطلاعات غلط میدید؟ بله بنده هم میدونم به طریقی میشه اینکار رو انجام داد
اما چرا؟
خب ترتیب بهم بریزه ، اصلا اهمیتی نداره ، شما اگر طراحی دیتابیس رو در حد ساخت یک جدول در نظر نگیری ، متوجه این مطلب خواهی شد که تغییر دادن مقادیر فیلدهایی که بصورت اتوماتیک مقدار دهی میشن اشتباهه



موفق باشید.

harash
دوشنبه 14 اردیبهشت 1394, 14:20 عصر
سلام
اوه نه سوال اینجاست که آیا اصلا نمیشه آیدی اتوماتیک را تغییر داد؟پاسخ را هم آقای آشتیانی اشاره کردند که میشه!
و اگر بشه پس من اطلاعات غلط ندادم!!!!راه حل غیر مرسوم و تعریف نشده داره مهم اینه که میشه آنرا دوباره مرتب کرد
و به حالت اول در آورد که اهمیت موضوع همینه اما چرا باید از آیدی اتوماتیک استفاده کرد خب سلیقه ایی هستش و البته
پر منفعت اما حتما راهکارهایی بجز اون هم هست مثلا شماره های اختصاصی مثل کد ملی - شماره تلفن -شماره شناسنامه
-شماره بارکد و یا هرچیز دیگه که انحصاری باشه اما گاهی اجبارا باید از آن بعنوان تنها راهکار استفاده کرد و بسیار کدهای برنامه
را کاهش میده و اگر بتوان استفاده دیگری مثل شماره ردیف هم ازش کرد بسیار عالی و کاربردی تر خواهد شد این را که تصدیق می کنید دیگه:لبخندساده:
و یک چیز دیگه خود دیتا بیس موقعی مهم میشه که مرجعی برای نگه داری اطلاعات ما باشد یک آیدی اتوماتیک نمیتونه جزئی از اطلاعات مستقیم
و قابل نمایش باشه و برای نشان ندادنش باید کد بنویسید و خود قراردادنش در دیتا بیس هم انباشت داده میکنه باید قابل استفاده اش کرد موفق باشید

محمد آشتیانی
دوشنبه 14 اردیبهشت 1394, 22:02 عصر
سلام
دوست من ، شما قطعا اطلاعات غلط دادید ، اینکه شما یک کار اشتباه رو انجام میدید و احتمالا از نظر خودتون مشکلی نداره ، صحیح نیست که اینجا بعنوان یک راهکار ارائه بدید
طبیعتا صحبت های بنده باعث این خواهد شد که شما پاسخی بدید تا حتما حقانیت خودتون رو در این مورد خاص ثابت کنید ، اما این آخرین پاسخ بنده در این تاپیک خواهد بود بعلت اینکه بحث غیر فنی و غیر منطقی رو بی فایده میدونم.
ایراد کار از اینجا ناشی میشه که شما کاربرد اصلی این نوع فیلدها رو رها کردید و به سراغ فرعیات رفتید
مسئله دیگر اینه که استفاده از فیلد فوق الذکر به هیچ عنوان سلیقه ای نیست ، هر کاری اصول مربوط به خودشو داره.

در پست قبل هم عرض شد که دید شما به طراحی دیتابیس در سطح یک جدول منفرد هست یا نهایتا دیتابیسی در حد پروژه های کوچیک دانشجویی ، و انگار اصولا ارتباطات بین جداول و مسائلی از این دست رو اصلا در نظر نمیگیرید.

در آخر عرض کنم که چنتا از مثالهایی که فرمودید منحصر به فرد نیستند مثل
شماره شناسنامه
بارکد
یا حتی شماره تلفن

و اینکه اصلا و ابدا قرار نیست به جای شماره ردیف از این فیلد استفاده بشه



موفق باشید.