विवरण
Sequence (सीक्वेंस) क्रम द्वारा व्यवस्थित पूर्णांकों का एक सेट है। सीक्वेंस का उपयोग अक्सर डेटाबेस में किया जाता है क्योंकि कई एप्लिकेशन की आवश्यकता होती है कि टेबल में प्रत्येक पंक्ति में प्राइमरी की के समान एक यूनिक मान हो।
यह लेख आपको SQL Server में सीक्वेंस बनाने और हटाने के सिंटैक्स और उदाहरण देता है।
CREATE SEQUENCE (सीक्वेंस बनाएं)
सिंटैक्स
सीक्वेंस बनाने के लिए, हमारे पास निम्न सिंटैक्स है:
CREATE SEQUENCE [schema.] sequence_name
[AS datatype]
[START WITH value]
[INCREMENT BY value]
[MINVALUE value | NO MINVALUE]
[MAXVALUE value | NO MAXVALUE]
[CYCLE | NO CYCLE]
[CACHE value | NO CACHE];
पैरामीटर्स:
- AS datatype: BIGINT, INT, TINYINT, SMALLINT, DECIMAL, या NUMERIC प्रकार हो सकते हैं। यदि आप कोई विशिष्ट प्रकार निर्दिष्ट नहीं करते हैं, तो प्रोग्राम डिफ़ॉल्ट रूप से आपके डेटाटाइप को BIGINT रूप में लेगा।
- START WITH value: वह मान जो सीक्वेंस लौटाता है।
- INCREMENT BY value: सीक्वेंस के बढ़ने/घटने का नियम, जो पॉजिटिव या नेगेटिव हो सकता है। यदि यहां मान पॉजिटिव है, तो सीक्वेंस इन्क्रीमेंटल मानों का अनुक्रम होगा। विपरीत नेगेटिव है, तो सीक्वेंस घटेगा।
- MINVALUE value: स्ट्रिंग में सबसे छोटा मान।
- NO MINVALUE: न्यूनतम मान निर्दिष्ट न करें।
- MAXVALUE value: स्ट्रिंग में अधिकतम मान।
- NO MAXVALUE: अधिकतम मान निर्दिष्ट न करें।
- CYCLE: सीक्वेंस पूरा होने पर शुरुआत से शुरू होगा।
- NO CYCLE: सीक्वेंस स्ट्रिंग के अंत में विफल हो जाएगा, पूरा होने पर फिर से शुरू नहीं होगा।
- CACHE value: डिस्क IO को कम करने के लिए कैश में सेव करें।
- NO CACHE: कैश में सेव न करें।
उदाहरण
CREATE SEQUENCE contacts_seq
AS BIGINT
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 99999
NO CYCLE
CACHE 10;
यहां हमने contacts_seq नाम का एक सीक्वेंस बनाया है, जो मान 1 से शुरू होता है, बाद के प्रत्येक मान में एक यूनिट बढ़ता है (यानी 2, 3, 4...)। स्ट्रिंग लगभग 10 मानों को कैश में स्टोर करेगी। सीक्वेंस में अधिकतम मान 99999 है और यह सबसे बड़े मान पर सीक्वेंस समाप्त होने के बाद स्ट्रिंग को पुनः आरंभ नहीं करेगा।
आप उपरोक्त कमांड को निम्न प्रकार से सरलता से भी निष्पादित कर सकते हैं:
CREATE SEQUENCE contacts_seq
START WITH 1
INCREMENT BY 1;
तो अब आपने एक ऑटोनंबर फील्ड का अनुकरण करने वाला सीक्वेंस बनाया है। अगला, इस सीक्वेंस से एक मान आउटपुट करने के लिए हम NEXT VALUE FOR कमांड का उपयोग करते हैं:
SELECT NEXT VALUE FOR contacts_seq;
यह स्टेटमेंट contacts_seq से अगला मान प्राप्त करेगा। फिर अपने निष्पादन के लिए आवश्यक कमांड्स का उपयोग करें। उदाहरण के लिए:
INSERT INTO contacts
(contact_id, last_name)
VALUES
(NEXT VALUE FOR contacts_seq, 'Smith');
यह INSERT स्टेटमेंट कॉन्टैक्ट टेबल में एक नया रिकॉर्ड इन्सर्ट करता है। contact_id फील्ड को contacts_seq से अगला नंबर असाइन किया जाएगा, last_name फील्ड 'Smith' होगा।
DROP SEQUENCE (सीक्वेंस हटाएं)
एक बार सीक्वेंस बन जाने के बाद, कई कारणों से आप डेटाबेस से सीक्वेंस को हटाना चाह सकते हैं।
सिंटैक्स
सीक्वेंस हटाने के लिए, हमारे पास निम्न सिंटैक्स है:
DROP SEQUENCE sequence_name;
पैरामीटर्स:
sequence_name: वह सीक्वेंस नाम जिसे आप हटाना चाहते हैं।
उदाहरण
DROP SEQUENCE contacts_seq;
इस कमांड को निष्पादित करके, आपने डेटाबेस से contacts_seq स्ट्रिंग को हटा दिया है।
सीक्वेंस गुण
सीक्वेंस गुणों का परीक्षण करने के लिए, हमारे पास निम्न सिंटैक्स है:
SELECT * FROM sys.sequences WHERE name = 'sequence_name';
पैरामीटर्स:
sequence_name: गुणों का परीक्षण करने के लिए स्ट्रिंग का नाम।
उदाहरण
SELECT *
FROM sys.sequences
WHERE name = 'contacts_seq';
यह उदाहरण sys.sequences सिस्टम से जानकारी क्वेरी करता है और contacts_seq स्ट्रिंग के लिए परिणाम प्राप्त करता है।
Sys.sequences सिस्टम में निम्न कॉलम शामिल हैं:
| कॉलम | नोट |
|---|---|
| name | CREATE SEQUENCE स्टेटमेंट में बनाया गया सीक्वेंस नाम |
| object_id | ऑब्जेक्ट का ID |
| principal_id | सीक्वेंस का प्रिंसिपल ID (संख्यात्मक मान) |
| schema_id | सीक्वेंस का स्कीमा ID |
| parent_object_id | पैरेंट ऑब्जेक्ट का ID |
| type | SO |
| type_desc | SEQUENCE_OBJECT |
| create_date | CREATE SEQUENCE कमांड के साथ सीक्वेंस बनाने की दिनांक/समय |
| modify_date | सीक्वेंस के अंतिम संशोधन की दिनांक/समय |
| is_ms_shipped | मान 0 या 1 |
| is_published | मान 0 या 1 |
| is_schema_published | मान 0 या 1 |
| start_value | सीक्वेंस का प्रारंभिक मान |
| increment | सीक्वेंस के बढ़ने/घटने का नियम मान |
| minimum_value | स्ट्रिंग में न्यूनतम मान |
| maximum_value | स्ट्रिंग में अधिकतम मान |
| is_cycling | मान 0 या 1. 0 = NO CYCLE, 1 = CYCLE |
| is_cached | मान 0 या 1, 0 = NO CACHE, 1 = CACHE |
| cache_size | is_cached = 1 होने पर मेमोरी बफर आकार |
| system_type_id | सीक्वेंस का सिस्टम प्रकार ID |
| user_type_id | सीक्वेंस का यूजर प्रकार ID |
| precision | सीक्वेंस के डेटा प्रकार के लिए अधिकतम सटीकता |
| scale | सीक्वेंस के लिए अधिकतम स्केल |
| current_value | सीक्वेंस से प्राप्त अंतिम मान |
| is_exhausted | मान 0 या 1. 0 = सीक्वेंस में कई मान। 1 = कोई मान नहीं |