PDA

View Full Version : update مقدار کلید اصلی و آپدیت شدن مقادیر کلید های فرعی



svhasvha
دوشنبه 28 آبان 1397, 11:47 صبح
سلام خدمت تمامی سروران گرام
یه سوال
من یه جدول با کلید اصلی idntty دارم که با 6 تا جدول دیگه رابطه داره
حالا چون یه تعداد از مقادیر این کلید های اصلی حذف شده (طی فرایند حذف رکورد) و شمار ها مقادیر جا افتاده دارن(مثلا مقدار ستون کلید اصلیم شده
1
2
3
5
6
7
11)
حالا میخوام این مقادیر رو آپدیت کنم یعنی دوباره شماره گزاری کنم که شماره ها به ترتیب و بدون جا افتادن بشه
و پشت بندش کلید های فرعی وصل شده به اون هم آپدیت بشن

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


راهی که به ذهن خودم رسید اینه که مقادیر رو تو یه جول تمپ ذخیره کنم بعد رابطه ها رو غیر فعال کنم بعدش مقدار ستون کلید اصلی رو مجدد شماره گزاری کنم و مرحله بعد با استفاده از جدول تمپ مقادیر کلید های فرعی رو آپدیت کنم آخر کارم رابطه جداول رو فعال کنم
ولی خیلی جالب نیس
نکته آخر اینکه تمام این کارو میخوام با کوئی انجام بدم چون میخوام امکانشو به کاربر بدم که تو نرم افزار خودش انجام بده
ایشالا که خوب توضیح داده باشم
پیش آ پیش از راهنماییتون متشکرم

حمیدرضاصادقیان
دوشنبه 28 آبان 1397, 18:40 عصر
سلام
کافیه شما خاصیت cascade update رو on کنید و با یک Update مقدار رو از یک ، یکی یکی اضافه کنید.
update table1 set id=id+1
با این کد یکی یکی به مقدار Id از اول اضافه میشه
برای توسعه اش کافیه خودتون شرط بنویسید که این بروز رسانی درست انجام بشه

svhasvha
سه شنبه 29 آبان 1397, 08:32 صبح
ممنون جواب داد

svhasvha
دوشنبه 06 اسفند 1397, 14:19 عصر
لطفا راهنمایی کنید دلیل خطای کد زیر چیه
SET IDENTITY_INSERT psanad ON

update psanad set PSANAD_ID=a.Row# from (select ROW_NUMBER() OVER(ORDER BY PSANAD_ID ASC) AS Row# ,PSANAD_ID from psanad )as a where a.PSANAD_ID=PSANAD.PSANAD_ID
set IDENTITY_INSERT psanad off
select * from PSANAD.

اینم خطاش
Msg 8102, Level 16, State 1, Line 3
Cannot update identity column 'PSANAD_ID'.