PDA

View Full Version : تغییر DataType ستون PK از int به bigint



A.Farzin
دوشنبه 03 دی 1386, 19:01 عصر
با سلام

به تصویر جدول زیر نگاهی بیندازید.
در این جدول بین ستون ColID و ستون RefColID یک رابطه‌ای برقرار است. برخی از رکوردهای این جدول بچه‌های یک رکورد دیگر در همان جدول به حساب می‌آیند که مقدار ستون ColID مادر در ستون RefColID بچه، نوشته شده است.

نوع داده تعریف شده برای ColID از نوع int است و ‍constraint آن بر وضعیت Counter +1 (یا همان Autonumber) تنظیم شده است.
در آینده نزدیک لازم خواهد شد تا دیتاتایپ ستون ColID از int به bigint تغییر داده شود.
در ضمن مقادیر فعلی موجود در ستون ColID به دلیل ارتیاط داشتن رکوردها براساس آنها به هیچ عنوان نیاید عوض شود.
با توجه به دارا بودن Constraint فوق و با محدودیت فوق، آیا تغییر نوع داده موجب تغییر مقادیر موجود در ابن فیلد خواهد شد؟
اگر بله، چه کنم که ارتباط رکوردها با هم به هم نخورد؟
ممنون

JAFO_IRAN
دوشنبه 03 دی 1386, 19:32 عصر
سلام

این تغییرات عملا فقط با قطع تمام ارتباطها، کپی محتویات جدول در یک جدول موقتی، حذف جدول، تعریف دوباره جدول و بازگرداندن اطلاعات و تعریف دوباره ارتباطها میسر میشه. یک script بسیار مفصل لازم داره، ولی میشه کاری کرد در پایان همه چیز درست باشد. توصیه میکنم با EnterpriseMngr تغییرات را در جدولت بدی و بعد به جای save از تکمه دیگری که script لازم برای انجام تغییرات رو درست میکنی استفاده کنی ببینی چه کارهایی باید انجام بشه.

ارادت

MShirzadi
دوشنبه 03 دی 1386, 19:40 عصر
من دوست سئوالت رو متوجه نشدم ولی تا اونجایی که فهمیدم باید بگم که اگر این فیلد شما با فیلد دیگر Relation ندارد می توانی تعییر بدی و هیچ مشکلی پیش نمیاد
اما اگر Relation داشتی باید ابتدا Relation را حذف بشه و تغییرات هم اعمال بشه (توجه داشته باش که باید این تغییرات باید در تمام فیلد هایی که این فیلد (ColID) با اونا در ارتباط بود تعییر کنه) و بعد دوباره Relation برقرار بشه
موفق باشی