SQLite में, आप ALTER TABLE
. का उपयोग कर सकते हैं मौजूदा टेबल में कॉलम जोड़ने के लिए स्टेटमेंट।
यह वास्तव में उन कुछ चीजों में से एक है जो आप ALTER TABLE
. के साथ कर सकते हैं SQLite में कथन। केवल वही चीज़ें जो आप ALTER TABLE
. के साथ कर सकते हैं SQLite में कथन एक तालिका का नाम बदलें, एक कॉलम का नाम बदलें, और एक मौजूदा तालिका में एक नया कॉलम जोड़ें।
उदाहरण 1
कल्पना कीजिए कि हमारे पास निम्न तालिका है:
CREATE TABLE Cats(
CatId INTEGER PRIMARY KEY,
CatName
);
और अब हम DOB . नामक कॉलम जोड़ना चाहते हैं . हम निम्नलिखित कोड का उपयोग करके ऐसा कर सकते हैं:
ALTER TABLE Cats ADD COLUMN DOB;
यह उतना ही आसान है।
प्रतिबंध
आप परिभाषा के लिए अन्य विनिर्देश भी प्रदान कर सकते हैं, जैसे कि बाधाएं, आदि, लेकिन कुछ प्रतिबंध हैं।
विशेष रूप से:
- नए कॉलम में
PRIMARY KEY
नहीं हो सकती है याUNIQUE
बाधा। - नए कॉलम का डिफ़ॉल्ट मान
CURRENT_TIME
. नहीं हो सकता है ,CURRENT_DATE
,CURRENT_TIMESTAMP
, या कोष्ठक में व्यंजक। - यदि एक
NOT NULL
बाधा निर्दिष्ट है, तो कॉलम मेंNULL
. के अलावा एक डिफ़ॉल्ट मान होना चाहिए । - यदि विदेशी कुंजी बाधाएं सक्षम हैं और एक
REFERENCES
वाला कॉलम है क्लॉज जोड़ा गया है, कॉलम मेंNULL
. का डिफ़ॉल्ट मान होना चाहिए । - यदि नया कॉलम जेनरेट किया गया कॉलम है, तो इसे
STORED
नहीं किया जा सकता है कॉलम। यह एकVIRTUAL
हो सकता है हालांकि कॉलम।
उदाहरण 2
यहाँ एक और उदाहरण है, इस बार मैं नए कॉलम की परिभाषा में कुछ और विशिष्टताएँ जोड़ रहा हूँ:
CREATE TABLE Dogs(
DogId INTEGER PRIMARY KEY,
DogName
);
और अब हम DOB . नामक कॉलम जोड़ना चाहते हैं . हम निम्नलिखित कोड का उपयोग करके ऐसा कर सकते हैं:
ALTER TABLE Dogs
ADD COLUMN Score NOT NULL DEFAULT 0;
बदलावों की जांच करें
SQLite में किसी तालिका की संरचना की जाँच करने के कई तरीके हैं।
एक तरीका है PRAGMA table_info()
. का उपयोग करना बयान।
PRAGMA table_info(Dogs);
परिणाम:
cid name type notnull dflt_value pk --- ------- ------- ---------- ---------- -- 0 DogId INTEGER 0 1 1 DogName 0 0 2 Score 1 0 0
हम नया कॉलम देख सकते हैं, और हम देख सकते हैं कि इसमें NOT NULL
है बाधा है, और इसका डिफ़ॉल्ट मान 0 . है ।