मैं sqlite में कॉलम कैसे बदलूं? इसमें हैPostgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
मेरा मानना है कि वहाँ बिल्कुल भी किसी भी वर्ग के वर्ग में नहीं है, केवल वैकल्पिक तालिका समर्थित है।
कोई उपाय? धन्यवाद!
मैं sqlite में कॉलम कैसे बदलूं? इसमें हैPostgresql
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
मेरा मानना है कि वहाँ बिल्कुल भी किसी भी वर्ग के वर्ग में नहीं है, केवल वैकल्पिक तालिका समर्थित है।
कोई उपाय? धन्यवाद!
जवाबों:
Sqlite में कोई भी COLUMN नहीं है।
मेरा मानना है कि आपका एकमात्र विकल्प यह है:
यह अन्य Stackoverflow जवाब विवरण में प्रक्रिया बताते हैं
हालांकि यह सही है कि कोई भी COLUMN नहीं है, यदि आप केवल कॉलम का नाम बदलना चाहते हैं, तो नॉट नाल बाधा न डालें, या डेटा प्रकार को बदलें, आप निम्न आदेशों के खतरनाक सेट का उपयोग कर सकते हैं :
PRAGMA writable_schema = 1;
UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE BOOKS ( title TEXT NOT NULL, publication_date TEXT)' WHERE NAME = 'BOOKS';
PRAGMA writable_schema = 0;
स्कीमा में परिवर्तन को फिर से लोड करने के लिए आपको अपने कनेक्शन को बंद या फिर से खोलना होगा या डेटाबेस को वैक्यूम करना होगा।
उदाहरण के लिए:
Y:\> **sqlite3 booktest**
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> **create table BOOKS ( title TEXT NOT NULL, publication_date TEXT NOT
NULL);**
sqlite> **insert into BOOKS VALUES ("NULLTEST",null);**
Error: BOOKS.publication_date may not be NULL
sqlite> **PRAGMA writable_schema = 1;**
sqlite> **UPDATE SQLITE_MASTER SET SQL = 'CREATE TABLE BOOKS ( title TEXT NOT
NULL, publication_date TEXT)' WHERE NAME = 'BOOKS';**
sqlite> **PRAGMA writable_schema = 0;**
sqlite> **.q**
Y:\> **sqlite3 booktest**
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> **insert into BOOKS VALUES ("NULLTEST",null);**
sqlite> **.q**
संदर्भ निम्नलिखित:
pragma writable_schema
जब यह प्रागमा होता है, तो SQLITE_MASTER टेबल जिसमें डेटाबेस को साधारण अद्यतन, INSERT और DELETE स्टेटमेंट का उपयोग करके बदला जा सकता है। चेतावनी: इस प्रचार का दुरुपयोग आसानी से एक भ्रष्ट डेटाबेस फ़ाइल में हो सकता है।
[परिवर्तन तालिका] ( http://www.sqlite.org/lang_altertable.html से )
SQLite सीमित तालिका के सीमित उपसमूह का समर्थन करता है। SQLite में ALTER TABLE कमांड उपयोगकर्ता को एक तालिका का नाम बदलने या किसी मौजूदा तालिका में एक नया कॉलम जोड़ने की अनुमति देता है। एक स्तंभ का नाम बदलना, एक स्तंभ को हटाना, या एक तालिका से बाधाओं को जोड़ना या निकालना संभव नहीं है।
SQLite सीमित तालिका के सीमित उपसमूह का समर्थन करता है। SQLite में ALTER TABLE कमांड उपयोगकर्ता को एक तालिका का नाम बदलने या किसी मौजूदा तालिका में एक नया कॉलम जोड़ने की अनुमति देता है। एक स्तंभ का नाम बदलना, एक स्तंभ को हटाना, या एक तालिका से बाधाओं को जोड़ना या निकालना संभव नहीं है। लेकिन आप निम्न चरणों द्वारा तालिका स्तंभ डेटाटाइप या अन्य संपत्ति को बदल सकते हैं।
अधिक विवरण के लिए आप लिंक का उल्लेख कर सकते हैं ।