Identity در SQL Server
شنبه 14 آذر 1394identity در Sql Server از ویژگی های بسیار ساده و مفید است. اما بسیاری از توسعه دهندگان وب ان را به اشتباه تفسیر میکنند. Identity در sql server به عنوان فیلدی با قابلیت افزایش خودکار شناخته شده است.
identity در Sql Server از ویژگی های بسیار ساده و مفید است. اما بسیاری از توسعه دهندگان وب ان را به اشتباه تفسیر میکنند. Identity در sql server به عنوان فیلدی با قابلیت افزایش خودکار شناخته شده است. بیایید با یک مثال Identity را درک کنیم.
query برای ایجاد یک جدول
CREATE TABLE MyBlogs ( BlogId int IDENTITY(1,1) NOT NULL, BlogTitle nvarchar(255) NOT NULL, BlogDescription nvarchar(1000) NOT NULL, BlogDetails NVARCHAR(MAX) NOT NULL, IsPrimary bit NOT NULL, IsActive bit NOT NULL )
query برای افزودن data در جدول
insert into MyBlogs (BlogTitle, BlogDescription, BlogDetails,IsPrimary,IsActive) values ('BlogTitle1', 'BlogDescription1' ,'BlogDetails1', 0, 1), ('BlogTitle2', 'BlogDescription2' ,'BlogDetails2', 0, 1), ('BlogTitle3', 'BlogDescription3' ,'BlogDetails3', 0, 1), ('BlogTitle4', 'BlogDescription4' ,'BlogDetails4', 0, 1), ('BlogTitle5', 'BlogDescription5' ,'BlogDetails5', 0, 1)
query انتخاب تمام داده های جدول
select * from MyBlogs
identity seed چیست؟
Identity Seed مقداری است که برای تصمیم گیری اولین مقدار از identity در جدول را مشخص میکند.
identity increment value چیست؟
مقدار افزایشی Identity می باشد. که به مقدار identity هر ردیف قبلی اضافه شده است.
ایا ما میتوانیم از مقادیر منفی برای identity seed و مقدار increment استفاده کنیم؟
Identity Seed با عدد منفی
CREATE TABLE MyBlogs2 ( BlogId int IDENTITY(-100,1) NOT NULL, BlogTitle nvarchar(255) NOT NULL, BlogDescription nvarchar(1000) NOT NULL, BlogDetails NVARCHAR(MAX) NOT NULL, IsPrimary bit NOT NULL, IsActive bit NOT NULL ) insert into MyBlogs2 (BlogTitle, BlogDescription, BlogDetails,IsPrimary,IsActive) values ('BlogTitle1', 'BlogDescription1' ,'BlogDetails1', 0, 1), ('BlogTitle2', 'BlogDescription2' ,'BlogDetails2', 0, 1), ('BlogTitle3', 'BlogDescription3' ,'BlogDetails3', 0, 1), ('BlogTitle4', 'BlogDescription4' ,'BlogDetails4', 0, 1), ('BlogTitle5', 'BlogDescription5' ,'BlogDetails5', 0, 1) select * from MyBlogs2
Identity Seed با عدد منفی و مقدار increment منفی
CREATE TABLE MyBlogs3 ( BlogId int IDENTITY(-1000,-5) NOT NULL, BlogTitle nvarchar(255) NOT NULL, BlogDescription nvarchar(1000) NOT NULL, BlogDetails NVARCHAR(MAX) NOT NULL, IsPrimary bit NOT NULL, IsActive bit NOT NULL ) insert into MyBlogs3 (BlogTitle, BlogDescription, BlogDetails,IsPrimary,IsActive) values ('BlogTitle1', 'BlogDescription1' ,'BlogDetails1', 0, 1), ('BlogTitle2', 'BlogDescription2' ,'BlogDetails2', 0, 1), ('BlogTitle3', 'BlogDescription3' ,'BlogDetails3', 0, 1), ('BlogTitle4', 'BlogDescription4' ,'BlogDetails4', 0, 1), ('BlogTitle5', 'BlogDescription5' ,'BlogDetails5', 0, 1) select * from MyBlogs3
ایا ما میتوانیم هر مقدار مثبت دیگری برای Identity Increment و Identity seed قرار دهیم؟ بله
CREATE TABLE MyBlogs4 ( BlogId int IDENTITY(5001,10) NOT NULL, BlogTitle nvarchar(255) NOT NULL, BlogDescription nvarchar(1000) NOT NULL, BlogDetails NVARCHAR(MAX) NOT NULL, IsPrimary bit NOT NULL, IsActive bit NOT NULL ) insert into MyBlogs4 (BlogTitle, BlogDescription, BlogDetails,IsPrimary,IsActive) values ('BlogTitle1', 'BlogDescription1' ,'BlogDetails1', 0, 1), ('BlogTitle2', 'BlogDescription2' ,'BlogDetails2', 0, 1), ('BlogTitle3', 'BlogDescription3' ,'BlogDetails3', 0, 1), ('BlogTitle4', 'BlogDescription4' ,'BlogDetails4', 0, 1), ('BlogTitle5', 'BlogDescription5' ,'BlogDetails5', 0, 1) select * from MyBlogs4
چه تفاوتی بین کلید identity و primery key میباشد؟
ما میتوانیم در همان ستون از کلید اصلی و identity استفاده کنیم.
BlogId int IDENTITY(5001,10) primary key NOT NULL
اما اگر ما کلید اصلی و Identity را به صورت جداگانه در نظر بگیریم تفاوت های بین چند کلید اولیه و identity وجود خواهد داشت.
identity به صورت خودکار مقدار میگیرد در حالی که کاربر میتواند برای کلید اصلی مقدار دلخواه خود را وارد نماید.
identity تنها میتواند مقدار عددی بگیرد در حالی کلید اصلی می تواند از انواع داده های دیگر استفاده نماید.
هر دو منحصر به فرد می باشند و در یک جدول تنها می توانند یک مقدار داشته باشند اما زمانی که کلید اصلی در یک جدول ایجاد می شود یک شاخص به طور خودکار ایجاد می شود.
CREATETABLE MyBlogs5 ( BlogId intIDENTITY(5001, 10) primarykeyNOTNULL, BlogTitle nvarchar(255) NOTNULL, )
می توانید مقدار Identify را reseeded نمایید.
CREATE TABLE MyBlogs6 ( BlogTitle nvarchar(255) NOT NULL, BlogDescription nvarchar(1000) NOT NULL, BlogDetails NVARCHAR(MAX) NOT NULL, IsPrimary bit NOT NULL, IsActive bit NOT NULL ) insert into MyBlogs6 (BlogTitle, BlogDescription, BlogDetails,IsPrimary,IsActive) values ('BlogTitle1', 'BlogDescription1' ,'BlogDetails1', 0, 1), ('BlogTitle2', 'BlogDescription2' ,'BlogDetails2', 0, 1), ('BlogTitle3', 'BlogDescription3' ,'BlogDetails3', 0, 1), ('BlogTitle4', 'BlogDescription4' ,'BlogDetails4', 0, 1), ('BlogTitle5', 'BlogDescription5' ,'BlogDetails5', 0, 1) select * from MyBlogs6
در حال حاضر کلید Identity را در جدول اضافه نمایید
ALTERTABLE MyBlogs6 ADDBlogIdINTIDENTITY(500, 5); select * from MyBlogs6
ایا ما میتوانیم تنظیمات identity را برای یک جدول مشخص کنیم در حالی که ایجاد یک جدول با استفاده از wizard انجام شده باشد؟ بله
- SQL Server
- 6k بازدید
- 8 تشکر