دنباله اعداد در Denali
دنباله اعداد يا Sequence Numbers ويژگي جديدي تو نسخه 2011 اسكيوال سرور(Denali)ه كه خيلي وقته تو Oracle وجود داشته.
نظر بعضيها هم در اين رابطه اين بوده!
Oracle has had sequences since SQL Server was only a gleam in the eye of Mr. Gates.
بر اساس تعريف ي كه تو Books on Line اومده sequence number "يك شي محدود به schema ي تعريف شده توسط كاربرهست كه برا اساس مشخصات ابتدايي ساختش دنباله ي از اعداد رو توليد ميكنه"
براي ايجاد Sequence تستي از كد زير استفاده ميكنيم
--ساختن اسكيما CREATE SCHEMA Test ; GO -- ساختن جدول CREATE TABLE Test.Orders (OrderID int PRIMARY KEY, Name varchar(20) NOT NULL, Qty int NOT NULL); GO -- ساختن دنباله CREATE SEQUENCE Test.CountBy1 START WITH 1 INCREMENT BY 1 ; GO -- اضافه كردن ركورد INSERT Test.Orders (OrderID, Name, Qty) VALUES (NEXT VALUE FOR Test.CountBy1, 'Tire', 2) ; INSERT test.Orders (OrderID, Name, Qty) VALUES (NEXT VALUE FOR Test.CountBy1, 'Seat', 1) ; INSERT test.Orders (OrderID, Name, Qty) VALUES (NEXT VALUE FOR Test.CountBy1, 'Brake', 1) ; GO -- ديدن نتيجه SELECT * FROM Test.Orders ; GO
خروجي
OrderID Name Qty 1 Tire 2 2 Seat 1 3 Brake 2
تفاوت هاي بين Sequence و IDENTITY رو تو شكل زير ميتونيد ببينيد
جاهايي كه خوبه از Sequence استفاده كرد
1-داشتن مقدار قبل از اضافه كردن تو جدول براي مثال دادن شماره خريد تو يك سايت آنلاين قبل از ثبت اون تو جدول
2-استفاده كردن از يك مقدار تو چند جدول براي مثال فرض كنيد براي لاگ كردن رويداد هاي يك كارگاه از چند جدول استفاده كرديد ولي ميخواهيد كه برفرض اگه رويدادي با شماره يك تو جدول A ثبت شد رويداد بعدي با شماره 2 مثلا تو جدول B ثبت بشه
البته از اين ويژگي يه تعبير ديگه ي هم هست كه من زياد متوجه نشدم داشتن يك عدد واحد براي مثلا شماره گروه كالا تو چندين جدول در صورتي كه با كليد خارجي ما اين مكانيزم رو داريم!!!
3-داشتن يك حلقه cycle اتومات براي مثال فكر كنيد شماره گذاري داريد كه ميخواهيد بعد از رسيدن به عدد 100 دوباره از 1 بهتون عدد بده همون DBCC CHECKIDENT كردن تو ستون هاي IDENTITY
نظرات
ارسال یک نظر