PostgreSQL जैसे रिलेशनल डेटाबेस के लिए, इसे डेवलपर्स के बीच व्यापक रूप से पाप माना जा सकता है नहीं प्रत्येक तालिका में प्राथमिक कुंजी शामिल करने के लिए। इसलिए यह महत्वपूर्ण है कि आप प्रत्येक तालिका में उस सभी महत्वपूर्ण प्राथमिक कुंजी कॉलम को जोड़ने के लिए अपनी पूरी कोशिश करें, और शुक्र है कि पोस्टग्रेज़ इस कार्य को पूरा करने के लिए दो तरीके प्रदान करता है।
सीरियल डेटा प्रकार का उपयोग करना
Postgres में प्राथमिक कुंजी जोड़ने के लिए अब तक की सबसे सरल और सबसे सामान्य तकनीक SERIAL
का उपयोग करना है या BIGSERIAL
डेटा प्रकार जब CREATING
एक नई तालिका। जैसा कि आधिकारिक दस्तावेज में बताया गया है, SERIAL
एक वास्तविक डेटा प्रकार नहीं है, लेकिन केवल शॉर्टहैंड नोटेशन है जो पोस्टग्रेज़ को निर्दिष्ट कॉलम के लिए एक ऑटो इंक्रीमेंटेड, विशिष्ट पहचानकर्ता बनाने के लिए कहता है।
नीचे हम अपनी सरल books
बनाएंगे उपयुक्त SERIAL
. के साथ तालिका प्राथमिक कुंजी के लिए डेटा प्रकार।
CREATE TABLE books (
id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100) NULL
);
बस हमारी id
. सेट करके SERIAL
. के रूप में कॉलम PRIMARY KEY
के साथ संलग्न है, Postgres पर्दे के पीछे के सभी जटिल कार्यों को संभाल लेगा और स्वचालित रूप से हमारी id
को बढ़ा देगा। प्रत्येक INSERT
. के लिए एक अद्वितीय, प्राथमिक कुंजी मान वाला स्तंभ ।
कस्टम अनुक्रम का उपयोग करना
कुछ दुर्लभ मामलों में, SERIAL
. में निर्मित मानक वृद्धिशील प्रकृति और BIGSERIAL
डेटा प्रकार आपकी आवश्यकताओं के अनुरूप नहीं हो सकते हैं। इन मामलों में, आप एक कस्टम SEQUENCE
बनाकर अपने कॉलम के लिए वही ऑटो इंक्रीमेंटेड प्राइमरी की फंक्शनलिटी कर सकते हैं। , Oracle के पुराने संस्करण में प्रयुक्त विधि के समान।
शायद हम विशेष रूप से सम संख्याओं के शौकीन हैं, लेकिन 100 से छोटी किसी भी चीज़ के लिए एक मजबूत अरुचि रखते हैं, इसलिए हम केवल यह चाहते हैं कि प्रत्येक प्रविष्टि के लिए हमारी प्राथमिक कुंजी को 100 से शुरू करके दो से बढ़ाया जाए। यह एक कस्टम SEQUENCE
. के साथ पूरा किया जा सकता है इस तरह:
CREATE SEQUENCE books_sequence
start 2
increment 2;
अब जब हम INSERT
हमारी books
. में एक नया रिकॉर्ड तालिका में, हमें nextval('books_sequence')
के साथ हमारे अनुक्रम के अगले मान का मूल्यांकन करने की आवश्यकता है और इसे हमारे id
. के रूप में उपयोग करें ।
INSERT INTO books
(id, title, primary_author)
VALUES
(nextval('books_sequence'), 'The Hobbit', 'Tolkien');
SEQUENCES
minvalue
. जैसे विकल्पों के साथ, यदि वांछित हो, तो इसे और भी अधिक मसालेदार बनाया जा सकता है और maxvalue
निश्चित रूप से चरम मूल्यों को इंगित करता है, और यहां तक कि CYCLE
, जो अनुक्रम को maxvalue
. तक पहुंचने के बाद "चारों ओर लूप" करने की अनुमति देता है , start
. पर वापस लौटना मूल्य और फिर से चढ़ाई शुरू करना। अधिक जानकारी आधिकारिक दस्तावेज़ीकरण में पाई जा सकती है।