PDA

View Full Version : سوال: اضافه کردن مقدار یک ستون بدون استفاده از Identity



alex_kh58
یک شنبه 02 خرداد 1389, 12:12 عصر
من یه جدول دارم که کلید اصلی ش Identity هست. بخاطر همین نمیتونم ستون دیگه ای با این خاصیت بهش اضافه کنم. آیا راه دیگه ای برای انجام این کار وجود داره؟ آیا میشه مثلا این ستونم رو Cumputed کردش که مقدارش رو از کلید اصلی بگیره بدون اینکه دیتای قبلی این ستون رو تغییر بده؟
ممنون.

mehrpars
یک شنبه 02 خرداد 1389, 17:16 عصر
میتونی توی sqlserver تابع بنویسی و این کارارو انجام بدی
در مورد توابع و تریگر ها توی همین سایت مطلب زیاد هست

محمد سلیم آبادی
یک شنبه 02 خرداد 1389, 18:20 عصر
چرا می خواهین دو ستون با خصیصه ی IDENTITY در جدولتان داشته باشید؟

alex_kh58
دوشنبه 03 خرداد 1389, 15:37 عصر
میتونی توی sqlserver تابع بنویسی و این کارارو انجام بدی
در مورد توابع و تریگر ها توی همین سایت مطلب زیاد هست


با تریگر میشه اما من دنبال یه روش بهتر بودم.

alex_kh58
دوشنبه 03 خرداد 1389, 15:41 عصر
چرا می خواهین دو ستون با خصیصه ی IDENTITY در جدولتان داشته باشید؟

یکیش کلید اصلیه و دیگری یه فیلدی مثل شماره درخواست. وقتی Identity نیست زمان Persist کردن دیتا، ماکزیمم شماره درخواست رو میگره. که این توی زمان کار کاربران (مثلن 100 نفر) باعث deadlock میشه اما اگه Identity باشه خود SQL Server میتونه اونو handle کنه.

محمد سلیم آبادی
دوشنبه 03 خرداد 1389, 16:41 عصر
این ستون "شماره درخواست" unique هست؟

alex_kh58
سه شنبه 04 خرداد 1389, 10:02 صبح
این ستون "شماره درخواست" unique هست؟

بله unique هستش.

محمد سلیم آبادی
سه شنبه 04 خرداد 1389, 14:31 عصر
با این حساب چرا کلید اصلی و این ستون شماره درخواست را یکی نمی کنید؟ یعنی کلید اصلی را روی ستون شماره درخواست بگذارید و خصیصه ی identity هم برایش در نظر بگیرین.

alex_kh58
سه شنبه 04 خرداد 1389, 18:14 عصر
با این حساب چرا کلید اصلی و این ستون شماره درخواست را یکی نمی کنید؟ یعنی کلید اصلی را روی ستون شماره درخواست بگذارید و خصیصه ی identity هم برایش در نظر بگیرین.

مشکل اینه که این کار قبلن انجام شده و الان سیستم زیر باره و کاربران اون شماره ها (شماره درخواست)رو در دست دارن و اگه اونا رو تغییر بدیم کلن به هم میریزه. اگه کلید اصلی رو هم برداریم اونوقت باید کلی ازجداول رو دیتاش رو تغییر بدیم به خاطر کلید خارجی.