دسته بندی ها
22:29 1400/12/12

تغییر کلید اصلی جدول از int به guid در Sql Server

مشخصات سوال کننده :
کاربر : nadimi1359     امتیاز کاربر : 0     رتبه کاربر : 7062
دسته بندی : Asp.net Core Asp.net Mvc

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3874
هوش مصنوعی

پاسخ هوش مصنوعی

برای تغییر نوع کلید اصلی جدول از int به GUID در SQL Server، می توانید مراحل زیر را دنبال کنید:

  1. ابتدا، یک ستون جدید از نوع uniqueidentifier به جدول اضافه کنید.
  2. سپس، تمام مقادیر جدید را با استفاده از تابع NEWID() برای هر ردیف تولید کنید.
  3. در مرحله بعد، کلید اصلی فعلی را حذف کنید.
  4. و در نهایت، ستون جدید را به عنوان کلید اصلی تعیین کنید.

مثال زیر را در نظر بگیرید:

ALTER TABLE YourTable
ADD NewId uniqueidentifier DEFAULT NEWID();

UPDATE YourTable
SET NewId = NEWID();

ALTER TABLE YourTable
DROP CONSTRAINT PK_YourTable; -- حذف کلید اصلی قدیمی

ALTER TABLE YourTable
DROP COLUMN Id; -- حذف ستون ID قدیمی

EXEC sp_rename 'YourTable.NewId', 'Id', 'COLUMN'; -- تغییر نام ستون جدید به Id

ALTER TABLE YourTable
ADD CONSTRAINT PK_YourTable PRIMARY KEY (Id); -- ایجاد کلید اصلی جدید

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

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

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : pedram_khan 23:49 1400/12/12

منظور شما رو از سوال متوجه شدم. در واقع شما قصد داشتید فیلد کلید اصلی که int بوده رو به guid تغییر بدید. ببینید اطلاعات شما در مورد سوالتون کمی ناقص هست. مثلا هیچ کدی یا خطایی ننوشتید.

اما به طور کلی اگر پروژه شما با C# یا Asp net Core هست شما توسط دستور زیر میتونید یک رشته Guid رو تولید کنید.

Guid id = Guid.NewGuid();
//Or
string id = Guid.NewGuid();

در متغیر Id رشته Guid شما ذخیره میشه و از این رشته می تونید به عنوان کلید اصلی در جدول استفاده کنید. در واقع هر رکوردی که در دیتابیس ثبت می کنید باید این رشته رو هم در فیلد Id خودتون نگهداری کنید.

دقت کنید که بهتره به این روش Guid رو استفاده کنید و از طریق خود Sql Server نوع فیلد رو Guid نکنید. بهتره فیلد خودتون رو در دیتابیس Varchar کنید و سپس فیلد Id رو داخلش ذخیره کنید.

اگر خطای دیگه ای دارید خود خطا رو بفرمایید تا بررسی بشه.

به این پاسخ امتیاز بدهید    0
امتیاز: 277 رتبه: 6
1 نظر
nadimi1359 : سلام موارد ساخت guid درست هست من هر مشکلی هست در بانک هست چون بعضی از جدولهام درست کار میکنه

امتیاز کاربر : 0   رتبه کاربر : 7062   تاریخ ثبت : 05:56 1400/12/17
پاسخ دهنده : hhojati 10:54 1400/12/18

 با سلام

شما می توانید در جدول تون id را از int به string تغییر دهید

سپس در فایل DbContext کد زیر را اضافه کنید

builder.Entity<MyTable>(entity => { entity.Property(e => e.Id).ValueGeneratedOnAdd(); });

به جای MyTable اسم جدول خودتون رو بنویسید.

ویرایش شده در چهارشنبه 18 اسفند 1400 ساعت 10:56:28
به این پاسخ امتیاز بدهید    1
امتیاز: 5 رتبه: 110
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود