PDA

View Full Version : توضیح دستور identity_insert در یک پرس و جوی insert



zimzim
دوشنبه 09 اسفند 1389, 11:32 صبح
با سلام خدمت دوستان عزیز
اگر ممکن است توضیح دهید زمانی که ویژگی identity_insert رابرای یک جدول on کنیم چه اتفاقی در insert کردن مقادیر Identity به آن جدول می افتد واگر off کنیم چطور می شود ؟ برای مثال در دستور زیر با set کردن این ویژگی چه اتفاقی می افتد؟
set identity_insert adventureworks.production.product on
insert into adventureworks.production.product
select * from adventureworks2008.production.product
where productnumber not in
(
select * from
adventureworks.production.product
)
set identity_insert adventureworks.production.product off
ممنون میشم اگه راهنماییم کنید
با تشکر

Reza_Yarahmadi
دوشنبه 09 اسفند 1389, 12:52 عصر
فیلدی که Identity اون True باشه توی دستور Insert نمیشه مقدار دستی بهش داد. برای مثال با فرض اینکه ID is Identity ، با اجرای دستور زیر خطا میده که نمیتوان برای Id مقدار صریح تعیین کرد.
Insert Into TableName(Id, Name) Values(1, 'Your Name')
ولی با ON کردن identity_insert میتونید این فیلد رو دستی مقدار دهی کنید. فقط باید توجه داشته باشید که بعد از کار مورد نظرتون دوباره اونو OFF کنید.
Set identity_insert TableName ON
Insert Into TableName(Id, Name) Values(1, 'Your Name')
Set identity_insert TableName OFF

fakhravari
یک شنبه 29 مرداد 1391, 14:44 عصر
با سلام
من تست کردم اما برای من اخطار میده
Set identity_insert B_Categories ON
Insert Into B_Categories(CategoryID, CategoryName) Values(2, 'Your Name')
Set identity_insert B_Categories OFF
مراحل تک تک انجام میدهم اما خطا ریلیشن میده.
اول on میزنم
بعد دستور Insert خطا ریلیشن میده.
Msg 2627, Level 14, State 1, Line 2
Violation of PRIMARY KEY constraint 'PK_B_Categories'. Cannot insert duplicate key in object 'dbo.B_Categories'.
The statement has been terminated.

baktash.n81@gmail.com
سه شنبه 31 مرداد 1391, 09:08 صبح
به نظر می آد که CategoryID تون تکراری هست ...