خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را

چگونه به ستون IDENTITY جدول در SQL Server مقدار خود را اضافه کنیم

چگونه به ستون IDENTITY جدول در SQL Server مقدار خود را اضافه کنیم

کد مطلب : 9088


اگر درصدد افزودن رکورد به ستون identity در یک جدول SQL Server را داشته باشید، خطای زیر و یا چیزی شبیه به خطای زیر را دریافت می کنید:

آموزش سالیدورکز 20-2019

Cannot insert explicit value for identity column in table ‘Artists’ when IDENTITY_INSERT is set to OFF.

ستون identity به دلیل مشخصی ایجاد شده است و به صورت خودکار توسطخود SQL Server مقدار دهی می شود. بنابراین نیازی به وارد کردن مقداری در آن ستون نیست.
با این حال ، گاهی اوقات لازم است که یک مقدار را در ستون identity وارد کنید. روش اینکار را در ذیل مشاهده خواهید کرد.

Enable IDENTITY_INSERT

با فعال کردن IDENTITY_INSERT می توانید ویژگی IDENTITY را نادیده بگیرید. با این کار می توانید مقادیر خود را در ستون identity وارد کنید.

SET IDENTITY_INSERT Artists ON;
INSERT INTO Artists (ArtistId, ArtistName, ActiveFrom)
VALUES
(1001, 'AC/DC','1973-01-11'),
(1002, 'Allan Holdsworth','1969-01-01'),
(1003, 'Buddy Rich','1919-01-01');
SET IDENTITY_INSERT Artists OFF;

در این مثال ، جدول Artists دارای یک ستون identity است (در اینجا، ArtistId ستون identity است). برای نادیده گرفتن ویژگی IDENTITY ، کافیست قبل از دستور insert، وضعیت SET IDENTITY_INSERT را ON کنید. با درج این دستور، شما مقدار خود را به جای مقداری که برای ستون identity توسط SQL تولید می شود را جایگزین می کنید. توجه داشته باشید که IDENTITY_INSERT می تواند همزمان فقط روی یک جدول فعال شود و خوب است که بلافاصله بعد از insert، IDENTITY_INSERT را غیرفعال کنید. همچنین ، برای فعال کردن IDENTITY_INSERT کاربر باید مالک جدول باشد یا مجوز ALTER را روی جدول مربوطه را داشته باشد.

Copying Between Tables

فعال کردن IDENTITY_INSERT می تواند برای کپی کردن داده ها بین جداول مفید باشد. در ذیل مثالی از کپی داده ها از جدول Artists به Artists_Archive را مشاهده می کنید:

SET IDENTITY_INSERT Artists_Archive ON;
INSERT INTO Artists_Archive (ArtistId, ArtistName, ActiveFrom)
SELECT ArtistId, ArtistName, ActiveFrom
FROM Artists;
SET IDENTITY_INSERT Artists_Archive OFF;

بدین ترتیب رکوردها با همان ID ای که در جدول Artists هستند، به جدول Artists_Archive اضافه می شوند.

نکته ای که باید توجه داشته باشید این است که ، اگر ستون identity دارای primary key باشد، رکوردهایی را که قبلاً در جدول مقصد وجود داشته را رد می کند.




دیدگاه ها(0)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.

لطفا پیش از ارسال دیدگاه ، به نکات زیر توجه فرمایید :

- از نوشتن دیدگاه های غیر مرتبط با پست جدا خودداری کنید.
- لطفاً دیدگاه های خود را با حروف فارسی تایپ کنید، دیدگاه های فینگیلیش تایید نمی شوند.
- قبل از ارسال دیدگاه حتما متن پست و نظرات سایر دوستان را بخوانید . نظرات اسپم و تکراری تایید نخواهند شد.
- نظر شما ممکن است بدون پاسخ تایید شوند که در این صورت باید منتظر پاسخ از سوی دیگر کاربران باشید .
- لطفا انتقادات و پیشنهادات و همچنین درخواست های خود را از طریق ایمیل khoshamoz[at].hotmail.com ارسال نمایید
- چرا آموزش های سایت خوش آموز در قالب فایل pdf به صورت یکجا ارائه نمی شوند؟
- چرا برخی پرسش های کاربران پاسخ داده نمی شوند؟

آموزش های رایگان خوش آموز