PDA

View Full Version : آموزش: قرار دادن مقدار جدید اتوماتیک ( is identiy) برابر یک (وقتی کل داده های جدول حدف شده باشند)



tarsim
شنبه 22 فروردین 1394, 16:41 عصر
سلام خدمت همه عزیزان . از اونجایی که ما برای ساخت یک پرژه تحت وب از بانک اطلاعاتی استفاده میکنیم مثل sqlserver و ابتدا وقتی در مرحله طراحی قرار داریم پروژه در حالت لوکال تست میشود به عنوان مثل در سایت خود قستمی برای ثبتنام کاربران داریم در بانک اطلاعاتی فیلدی های مورد نظر مثل username , Password , غیره وجود دارد و یک فیلد هم به عنوان bigint و یا int در نظر گرفته باشیم که به صورت اتوماتیک یک مقدار به آیدی مورد نظر اضافه می کند (مقدار is identiy) رو برابر یک قرار داده باشید . پست از هر بار اضافه شدن یوزر جدید مقدار این فیلد هم به صورت اتوماتیک اضافه خواهد شد حال شما فرض کنید 100 کاربر را برای تست در حالت لوکال ثبت کرده اید پس آخرین مقدار این فیلد 100 میباشد . حال اگر شما تمام داده های جدول ثبت نام خود را حذف کنید . با اضافه کردن کاربر جدید مقدار id جدید 101 خواهد شد در صورتی که باید مقدار id از 1 شروع شود.

بنده به شخصه خیلی دنبال روشی گشتم تا با حذف تمام داده های جدول مقدار id هم برای ثبت رکورد جدید 1 قرار بگیرد . و مورد هایی دیدم که واقعا لقمه را دور دهان چرخاندن بود !!! به عنوان مثل گفته اند باید جدول ثبت نام را به کول حذف کرد و جدول جدیدی ساخت با همان فیلد های جدول قبلی تا اندیس id جدول جدید 1 شود .

حوب حالا راه حل چیست ؟ یک راه حل خیلی ساده ای وجود دارد این است که مقدار فیلد id که is identy آن برابر با yes بود را ویرایش کنید و برابر با no قرار دهید و جدول را یک بار Execute Sql کنید (به روز رسانی جدول) و سپس دوباره مقدار is indenty را برابر yes قرار دهید . با این کار
مقدار جدید دوباره از 1 شروع خواهد شد.

التماس دعا

alireza_s_84
شنبه 22 فروردین 1394, 16:48 عصر
سلام خدمت همه عزیزان . از اونجایی که ما برای ساخت یک پرژه تحت وب از بانک اطلاعاتی استفاده میکنیم مثل sqlserver و ابتدا وقتی در مرحله طراحی قرار داریم پروژه در حالت لوکال تست میشود به عنوان مثل در سایت خود قستمی برای ثبتنام کاربران داریم در بانک اطلاعاتی فیلدی های مورد نظر مثل username , Password , غیره وجود دارد و یک فیلد هم به عنوان bigint و یا int در نظر گرفته باشیم که به صورت اتوماتیک یک مقدار به آیدی مورد نظر اضافه می کند (مقدار is identiy) رو برابر یک قرار داده باشید . پست از هر بار اضافه شدن یوزر جدید مقدار این فیلد هم به صورت اتوماتیک اضافه خواهد شد حال شما فرض کنید 100 کاربر را برای تست در حالت لوکال ثبت کرده اید پس آخرین مقدار این فیلد 100 میباشد . حال اگر شما تمام داده های جدول ثبت نام خود را حذف کنید . با اضافه کردن کاربر جدید مقدار id جدید 101 خواهد شد در صورتی که باید مقدار id از 1 شروع شود.

بنده به شخصه خیلی دنبال روشی گشتم تا با حذف تمام داده های جدول مقدار id هم برای ثبت رکورد جدید 1 قرار بگیرد . و مورد هایی دیدم که واقعا لقمه را دور دهان چرخاندن بود !!! به عنوان مثل گفته اند باید جدول ثبت نام را به کول حذف کرد و جدول جدیدی ساخت با همان فیلد های جدول قبلی تا اندیس id جدول جدید 1 شود .

حوب حالا راه حل چیست ؟ یک راه حل خیلی ساده ای وجود دارد این است که مقدار فیلد id که is identy آن برابر با yes بود را ویرایش کنید و برابر با no قرار دهید و جدول را یک بار Execute Sql کنید (به روز رسانی جدول) و سپس دوباره مقدار is indenty را برابر yes قرار دهید . با این کار
مقدار جدید دوباره از 1 شروع خواهد شد.

التماس دعا

با استفاده از دستور DBCC CHECKIDENT میتونید مقدار یک ستون Identity رو ریست کنید:
DBCC CHECKIDENT ('[TestTable]', RESEED, 0)

kamranetemadi
شنبه 22 فروردین 1394, 18:16 عصر
truncate table my-tbl