/ SQLite - sqlite में बल्क इंसर्ट के साथ / ऑटोजेनरेटेड आईडी

SQLite - sqlite में थोक सम्मिलन के साथ स्वत: उत्पन्न आईडी

मेरे पास एक SQLite टेबल है जो प्राथमिक कुंजी के रूप में एक ऑटोजेनरेटेड आईडी का उपयोग करती है। मैं UNION SELECT का उपयोग करके थोक आवेषण करना चाहता हूं, लेकिन यह तब तक खुश नहीं होता है जब तक कि मैं प्रत्येक के लिए एक आईडी निर्दिष्ट नहीं करता हूं:

sqlite> create table CelestialObject (id INTEGER PRIMARY KEY, name VARCHAR(25), distance REAL);
sqlite> insert into CelestialObject select "Betelguese" as name, 200 as distance UNION SELECT "Procyon", 500;
Error: table CelestialObject has 3 columns but 2 values were supplied

यदि मैं आईडी बनाने के लिए AUTOINCREMENT निर्दिष्ट करता हूं (यानी, "id INTEGER PRIMARY KEY AUTOINCREMENT") जब मैं तालिका बनाता हूं, तो त्रुटि समान होती है।

क्या कोई मुझे बता सकता है कि क्या प्रत्येक पंक्ति के लिए आईडी निर्दिष्ट किए बिना एक बल्क इन्सर्ट का उपयोग करने का कोई तरीका है?

उत्तर:

जवाब के लिए 0 № 1

या तो प्रति पंक्ति तीन मान प्रदान करें:

INSERT INTO CelestialObject SELECT NULL, "x", 42 ...

या उन कॉलम को स्पष्ट रूप से निर्दिष्ट करें जिन्हें आप भरना चाहते हैं:

INSERT INTO CelestialObject(name, distance) SELECT "x", 42 ...

यदि आपके पास SQLite 3.7.11 या बाद में है, तो आप थोक आवेषण आसान कर सकते हैं:

INSERT INTO CelestialObject(name, distance)
VALUES ("Betelgeose", 200),
("Procyon", 500),
... ;