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


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

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

سیستم یکپارچۀ سازمانی راهکار



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 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز