2012-02-18 13 views
20

मेरे पास निम्न SQLite कोड है। मैं प्रत्येक पंक्ति में ऑटो उत्पन्न करने वाला अद्वितीय आईडी कैसे डालूं?प्रत्येक SQLite पंक्ति में एक अद्वितीय आईडी कैसे सम्मिलित करें?

tx.executeSql('DROP TABLE IF EXISTS ENTRIES'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS ENTRIES (id unique, data)'); 

    tx.executeSql('INSERT INTO ENTRIES (id, data) VALUES (1, "First row")'); 
    tx.executeSql('INSERT INTO ENTRIES (id, data) VALUES (2, "Second row")'); 

उत्तर

27

आप के रूप id निर्धारित कर सकते हैं एक auto increment column:

create table entries (id integer primary key autoincrement, data) 

MichaelDorner नोटों के रूप में, SQLite documentation कहना है कि एक integer primary key एक ही बात करता है और थोड़ा तेज है । उस प्रकार का एक स्तंभ rowid के लिए उपनाम है, जो behaves like an autoincrement column है।

create table entries (id integer primary key, data) 

यह व्यवहार निहित है और अनुभवहीन SQLite डेवलपर्स ऑफ-गार्ड को पकड़ सकता है।

+1

सूचना पूरी तरह से काम किया है, कि "AutoIncrement कीवर्ड अतिरिक्त सीपीयू, स्मृति, डिस्क स्थान, और डिस्क मैं/हे भूमि के ऊपर लगाता है और अगर सख्ती से की जरूरत नहीं बचा जाना चाहिए। यह आमतौर पर जरूरत नहीं है। " (https://www.sqlite.org/autoinc.html) –

+0

@MichaelDorner: धन्यवाद, दिलचस्प, मैंने जवाब अपडेट किया है। – Andomar

+2

ध्यान दें कि पीडीओ के साथ PHP में 'integer' होना चाहिए और' int' नहीं है, अन्यथा यह आईडी को स्वचालित रूप से सेट नहीं करता है। – starbeamrainbowlabs

2

autoincrement आपका मित्र दोस्त है।

CREATE TABLE IF NOT EXISTS ENTRIES (id integer primary key autoincrement, data); 
INSERT INTO ENTRIES (data) VALUES ("First row"); 
INSERT INTO ENTRIES (data) VALUES ("Second row"); 

और उसके बाद:

> SELECT * FROM ENTRIES; 
1|First row 
2|Second row 
14

यह सिंटैक्स है जिसका मैं उपयोग करता हूं।

id INTEGER PRIMARY KEY AUTOINCREMENT, 

सीधे शब्दों में autoincrement स्तंभ

tx.executeSql('INSERT INTO ENTRIES (id, data) VALUES (NULL, "First row")'); 

या और भी आसान

tx.executeSql('INSERT INTO ENTRIES (data) VALUES ("First row")'); 
0

सम्मिलित करें के लिए के लिए डेटा उपलब्ध नहीं है, बेहतर इसी autoincrement मूल्य के लिए एक "अशक्त" मूल्य प्रदान प्रश्न चिह्न प्लेसहोल्डर।

tx.executeSql('INSERT INTO ENTRIES (id, data) VALUES (?, ?)', [null, "First row"]); 
0

इस के लिए मुझे

c.execute('INSERT INTO WEBSITES (url) VALUES (?)', [url]) 
संबंधित मुद्दे