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


Sequence در SQL Server

Sequence در SQL Server
از Sequence در SQL Server برای تولید مقادیر عددی به ترتیب استفاده می شود که می تواند به ترتیب صعودی یا نزولی در یک بازه زمانی مشخص باشد و در صورت درخواست ممکن است چرخه داشته باشد. اشیاء Sequence مشابه ستون IDENTITY در هر جدول SQL هستند. با این حال ، برخلاف ستون IDENTITY ، آنها مستقل هستند و به هیچ جدولی Attach نمی شوند. اشیا Sequence هم به صورت مستقل و هم در دستورات INSERT ، UPDATE و DELETE استفاده می شوند.

سیستم یکپارچۀ سازمانی راهکار
Syntax ایجاد SEQUENCE در SQL server به صورت زیر می باشد:



CREATE SEQUENCE [schema].[Sequencename]

[ AS data type ]

[ START WITH value]

[ INCREMENT BY value]

[ MINVALUE value | NO MINVALUE ]

[ MAXVALUE value | NO MAXVALUE ]

[ CYCLE | NO CYCLE ]

[ CACHE value | NO CACHE ];

AS : مقدار پیش فرض برای دیتاتایپ bigint می باشد. دیتاتایپ می تواند از نوع Int, SmallInt, TinyInt, BigInt, Decimal باشند.
START WITH: شروع بازه می باشد.
INCREMENT BY: می تواند مقدار منفی یا مثبت باشد. sequence یک توالی صعودی می باشد و اگر یک مقدار منفی مشخص شود ، sequence یک توالی نزولی از مقادیر خواهد بود.
MINVALUE: حداقل مقدار برای sequence
NO MINVALUE: به این معنی است که هیچ حداقل مقداری برای شی sequence مشخص نشده است.
MAXVALUE: یک پارامتر اختیاری است که حداکثر مقدار را برای sequence تعیین می کند.
NO MAXVALUE: به این معنی است که حداکثر مقدار برای sequence مشخص نشده است.
CYCLE: sequence پس از اتمام توالی دوباره شروع می شود.
NO CYCLE: عدم شروع دوباره sequence
CACHE: برای کش کردن مقادیر sequence استفاده می شود.
NO CACHE: مقادیر sequence کش نمی شوند.

خب، حالا با این توضیحات، به مثال از sequence در SQL Server می پردازیم.
در مثال زیر مشاهده می کنید که یک sequence با نام GenSeqId ایجاد می شود و sequence از نوع integer می باشد.
START WITH در این sequence از 100 بوده و INCREMENT BY آن 2 تایی میباشد.

CREATE SEQUENCE dbo.GenSeqId
AS INT
START WITH 100
INCREMENT BY 2

Sequence در SQL Server
با استفاده از عبارت زیر می توانید sequence ایجاد شده را چک کنید.

SELECT *
FROM sys.sequences
WHERE name = 'GenSeqId';

Sequence در SQL Server
برای دیدن مقداری که GenSeqId sequence در آن قرار دارد ، از دستور زیر استفاده کنید:

SELECT NEXT VALUE FOR [dbo].[GenSeqId]

Sequence در SQL Server
حالا برای تست، یک جدول با نام EmpData ایجاد می کنیم.

Create table EmpData(
EmpId int ,
EmpName varchar(100)
)

Sequence در SQL Server
اکنون تعدادی رکورد را در جدول EmpData وارد می کنیم ، برای ستون EmpId از عبارت زیر استفاده می کنیم.
INSERT INTO EmpData VALUES ( NEXT VALUE FOR [dbo].[GenSeqId],'NICK ANTHONY')

INSERT INTO EmpData VALUES ( NEXT VALUE FOR [dbo].[GenSeqId],'JACK MARK A')

Sequence در SQL Server
حال اجازه دهید که رکوردها را select کنیم. همانطور که خروجی را مشاهده می کنید که مقدار ستون EmpId توسط GenSeqId sequence تولید شده است. شروع از 100 بوده و مقادیر 2 تایی اضافه می شد و از این رو مقادیر اضافه شده در این ستون 102 و 104 می باشد.

SELECT * FROM EmpData

Sequence در SQL Server
برای ویرایش در sequence موجود از دستور ALTER SEQUENCE استفاده می شود. اکنون مقدار GenSeqId را برای شروع دوباره به عدد 1 تغییر می دهیم. پس شروع آن از 100 یه 1 تغییر یافت.

ALTER SEQUENCE [GenSeqId]
RESTART WITH 1

Sequence در SQL Server
خب، حالا با توجه به تغییری که در GenSeqId sequence دادیم، آن را چک می کنیم. همانطور که در ذیل مشاهده می کنید، GenSeqId sequence بروزرسانی شده است.

SELECT NEXT VALUE FOR [dbo].[GenSeqId]

Sequence در SQL Server
خب، حالا یک SEQUENCE دیگر با نام GenSeqNumber ایجاد می کنیم.

CREATE SEQUENCE [dbo].[GenSeqNumber]
AS INT
START WITH 1
INCREMENT BY 2
MINVALUE 1
MAXVALUE 6

Sequence در SQL Server
خب، GenSeqNumber ایجاد شده و همانطور که می بینید نوع آن int بوده و START WITH آن از 1 شروع می شود و 2 تایی با توجه به INCREMENT BY، افزایش می یابد. حداقل مقدار یا MINVALUE برای آن 1 و حداکثر مقدار 6 می باشد.
حالا اگر درصدد افزایش مقدار GenSeqNumber از 6 باشید، خطا دریافت خواهید کرد.
از آنجا که مقدار حداکثر این SEQUENCE، عدد 6 می باشد، این SEQUENCE با 3 بار اجرا شدن، خطا تولید خواهد کرد چون مقدار آن از 6 فراتر خواهد رفت.

Select NEXT VALUE FOR [dbo].[GenSeqNumber]

Sequence در SQL Server
برای جلوگیری از چنین خطاهایی می توانید از CYCLE در sequence استفاده کنید. که CYCLE در واقع یک Flag است. CYCLE را برای یک sequence به مقدار True تنظیم کنید، مقدار sequence دوباره به مقدار شروع برمیگردد و هرگز از مقدار حداکثری، تجاوز نمی کند.

CREATE SEQUENCE [dbo].[GenSeqNumber]

AS INT

START WITH 1

INCREMENT BY 2

MINVALUE 1

MAXVALUE 6

CYCLE

برای حذف یک sequence هم می توانید از دستور DROP استفاده کنید.

Drop sequence [GenSeqNumber_withcycle]

Sequence در SQL Server

نمایش دیدگاه ها (0 دیدگاه)

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

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


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