50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

مشکل ثبت نشدن بعضی از رکوردهای فیلدی که Identity دارد در SQL سرور

با سلام ، دوستان من یک سوال داشتم نمیدانم تا کنون با این مشکل برخورد کرده اید یا نه چرا در SQL Server 2008 در هنگام ثبت برخی از رکوردها با توجه به کلید اصلی که ویژگی Identity آن فعال باشد ثبت نمی شود . مثلا فرض کنید که ما یک جدول به نام T1 داریم که در آن 3 جدول با نامهای ID و Name و Family داریم که فیلد ID کلید اصلی و از نوع عددی بوده و قابلیت Identity آن فعال می باشد تا در هنگام ثبت یک رکورد SQL Server 2008 در فیلد ID به ترتیب یک عدد به آن اختصاص دهد .

حالا در هنگام ثبت برخی رکوردها برخی از آنها از قلم می افتد و ثبت نمی شود مثلا شماره ی ID چند رکورد ثبت شده به این صورت است 1 و 2 و 3 و 5 و 6 و ...که در آن شماره 4 جا مانده و ثبت نشده و این در صورتی است که باید تمامی شماره گزاری که SQL Server 2008 در فیلد های Identity انجام می دهد به ترتیب باشد .با تشکر

پرسیده شده در 1393/04/21 توسط

6 پاسخ

1

سلام به شما دوست عزیز.

برای identity شاید به خاطر شرایطی که دوستان گفتند اعدادی جا بیفتند و در نظر گرفته نشوند. حال اگر شما می خواهید که همه اعداد پشت سر هم بدون هیچ پرشی وجود داشته باشند پیشنهاد می کنم از row_number استفاده کنید.

پاسخ در 1400/12/24 توسط
0

نه من حذف نکردم

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

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

ارسال اطلاعات به سمت سرور در SQL Server 2008 به چه صورتی هستش TCP یا UDP ؟

پاسخ در 1393/04/21 توسط
1

سلام.

ممکنه به صورت دستی در این فیلد مقدار وارد شده باشه. با استفاده از دستور Set identity insert on میتونید دستی به این فیلد مقدار بدید.

که در اینصورت میتونه اشتباه مقدار درج شده باشه.

یا اینکه دستی در Management Studio دستکاری شده باشه .

یا اینکه حذف شده باشه.

پاسخ در 1393/05/01 توسط
1

شما میگید به صورت اتوماتیک که خود SQL داره عدد میده عددی جا میذاره؟

یعنی 1 و 2 و3 رو میده ولی 4 رو نمیده؟

اینی که میگید امکان نداره مگه اینکه خودتون پاک کرده باشید که در این صورت حق با جناب KING هست

پاسخ در 1393/04/21 توسط
0

باسلام

دوستان برای حل این مشکل چکار باید کرد. نمی خواهیم شماره ای جا بیفتد.

باتشکر

پاسخ در 1400/02/28 توسط
1

سلام

دوست عزیز دلیلش این که مثلا فرض کن مقدار ID جدولت 3 بوده بعد یه دیتا وارد شده و ID شده 4 . بعد این دیتا پاک شده و ID متناظر با اون هم پاک شده و وقتی دیتای دیگه ای وارد شده ID مقدار 5 گرفته و این توی SQL طبیعیه.

یعنی خاصیت IDentity توی SQL فقط اضافه میشه و اگر دیتای متناظرش پاک بشه ID کم نمیشه و در سری بعد هم مقدار قبلیش در نظر گرفته میشه و یه واحد بهش اضافه میشه.

حتی زمانی که یه جدول فرض کن 1000تا رکورد توش باشه و همه ی اون رکورد ها پاک بشن زمانی که بخوای دیتای جدیدی توش وارد کنی مقدار ID از همون مقدار قبلیش به اضافه 1 شروع میشه ینی مثلا 1001( که البته در این صورت باید با یه دستوری مقداری ID رو به 1 برگردونی )

پاسخ در 1393/04/21 توسط

پاسخ شما