مشخصات مقاله
-
1803
-
0.0
-
7716
-
0
-
0
جدول INSERT INTO SQL Server با ستون IDENTITY
جدول INSERT INTO SQL Server با ستون IDENTITY
در جدول dbo.Customer که طرح کلی آن را در این آموزش ارائه دادیم، ستون CustomerID یک identity ( ماهیت) می باشد. در اینجا توضیحاتی مربوط به ستون را مشاهده می کنید که قبلا ارائه دادیم:
- برای ستون CustomerID، "IDENTITY(1,1)"تعیین شده است. این امر به این معناست که هر ردیفی که وارد جدول می شود، SQL Server این مقدار را به طور خودکار به اندازه یک واحد افزایش می دهد که از عدد یک شروع می شود.
- اینجا نکته ی جالبی وجود دارد، زیرا زمانیکه شروع به نوشتن عبارت INSERT خود می کنیم، باید اطمینان حاصل کنیم که این ستون را وارد نخواهیم کرد، زیرا SQL Server آن را برای ما مدیریت خواهد کرد.
بنابراین اگر بخواهیم رکوردی با یک CustomerID مشخص وارد کنیم، چه اتفاقی خواهد افتاد؟ اجازه بدهید بگوییم که یک مشتری اشتباها پاک شد و شما می خواهید CustomerID اصلی آن را مجددا بازگردانید. چه کاری باید انجام دهید؟ اگر رکوردی شبیه آنچه در مثال های بالا داشتیم، وارد کنید بزرگترین عدد بعدی، و نه مقدار اصلی، وارد می شود. اجازه بدهید مثال زیر را چک کنیم تا چگونگی حل این موضوع را توضیح دهیم.
توضیحات
اجازه بدهید کد زیر را توضیح دهیم:
- بخش 1 – عبارت ساده ی SELECT برای بازگرداندن همه ی داده از جدول dbo.Customer.
- بخش 2 – یک رکورد مجزا را از جدول dbo.Customer پاک کنید.
- بخش 3 – عبارت Simple SELECT برای بازیابی همه ی داده از جدول dbo.Customer
- بخش 4 – عبارت Simple INSERT با شکست رو برو می شود، زیرا یک مقدار صریح و روشن را نمی توان به یک جدول با ستون هویت وارد کرد، زمانی که IDENTITY_INSERT به OFF تنظیم است که تنظیمات پپیش فرض می باشد.
- MSG 544 ، سطح 16، وضعیت 1، خط 1
نمی تواند مقدار صریح و روشن برای ستون هویت در جدول 'Customer' وارد کند، زمانیکه IDENTITY_INSERT به OFF تنظیم شده باشد. - بخش 5 – همان عبارت ساده ی وارد شده مانند بخش بالا به علاوه ی منطق IDENTITY_INSERT تا به یک مقدار واضح و روشن اجازه ی وارد شدن به جدول dbo.Customer را بدهد.
- بخش 6 – عبارت Simple SELECT برای بازیابی همه ی داده از جدول dbo.Customer برای تایید فرمان INSERT در بخش 5 موفق بود.
-- 1 - Retrieve all of the data -- from the dbo.Customer table SELECT * FROM dbo.Customer; GO -- 2 - Delete a single record DELETE FROM dbo.Customer WHERE CustomerID = 1; GO -- 3 - Verify the record was deleted SELECT * FROM dbo.Customer; GO -- 4 - Insert the deleted record -- Insert fails INSERT INTO [dbo].[Customer] ([CustomerID] ,[FirstName] ,[LastName] ,[PhoneNumber] ,[EmailAddress] ,[Priority] ,[CreateDate]) VALUES (1 ,'Jonah' ,'Hook' ,'777-777-7777' ,'jonah@neverdull.com' ,1 ,'2011-09-01'); GO -- 5 - Insert the deleted record -- Insert succeeds SET IDENTITY_INSERT [dbo].[Customer] ON INSERT INTO [dbo].[Customer] ([CustomerID] ,[FirstName] ,[LastName] ,[PhoneNumber] ,[EmailAddress] ,[Priority] ,[CreateDate]) VALUES (1 ,'Jonah' ,'Hook' ,'777-777-7777' ,'jonah@neverdull.com' ,1 ,'2011-09-01'); SET IDENTITY_INSERT [dbo].[Customer] OFF GO -- 6 - Verify the data SELECT * FROM dbo.Customer; GO