Hi, On Wed, Apr 13, 2016 at 1:54 PM, Igor Korot <ikorot01 at gmail.com> wrote: > Hi, Peter, > > On Wed, Apr 13, 2016 at 1:16 PM, Peter Aronson <pbaronson at att.net> wrote: >> There is one limitation to this approach, however. The entry for an >> autoincrement column in the sqlite_sequence table isn't made until the first >> row is inserted into the table. If you are also using the C interface, you >> can identify autoincrement columns using sqlite3_table_column_metadata. > > I will test that when I come home from work.
Yes, that didn't work. Can you tell me how to use sqlite3_table_column_metadata? Thank you. > > Thank you. > >> >> Peter >> >> On Wednesday, April 13, 2016 9:40 AM, Igor Korot <ikorot01 at gmail.com> >> wrote: >> >> >> >> Hi, Kees, >> >> On Wed, Apr 13, 2016 at 12:15 PM, Kees Nuyt <k.nuyt at zonnet.nl> wrote: >>> On Wed, 13 Apr 2016 10:58:54 -0400, Igor Korot >>> <ikorot01 at gmail.com> wrote: >>> >>>> Hi,, >>>> >>>>On Wed, Apr 13, 2016 at 10:54 AM, J Decker <d3ck0r at gmail.com> wrote: >>>>> Yes, you can get the create statement from sqlite_master table >>>> >>>> I was kind of hoping for a simpler solution so that not to >>>> parse "CREATE TABLE" statement... >>>> >>>> Well, I guess I will have to. >>> >>> With AUTOINCREMENT, the last autoincremented primary key value >>> is tracked in a table called sqlite_sequence. >>> >>> $ sqlite3 test2.db >>> SQLite version 3.8.12 2015-10-07 00:35:18 >>> Enter ".help" for usage hints. >>> sqlite> create table t1 (id INTEGER PRIMARY KEY, tx TEXT); >>> sqlite> create table t2 (id INTEGER PRIMARY KEY AUTOINCREMENT, >>> tx TEXT); >>> sqlite> INSERT INTO t1 (tx) VALUES ('one'),('two'); >>> sqlite> INSERT INTO t2 (tx) VALUES ('one'),('two'); >>> sqlite> SELECT name FROM sqlite_master WHERE type='table'; >>> t1 >>> t2 >>> sqlite_sequence >>> sqlite> SELECT * FROM sqlite_sequence; >>> t2|2 >>> sqlite> >> >> So I can actually query sqlite_sequence table with the table name in WHERE >> clause and it should give me the field that is set to be autoincrement. >> >> For the reference: https://www.sqlite.org/fileformat2.html (paragraph 2.6.2). >> >> Thank you. >> >> P.S.: There is a small typo on the page/paragraph I referenced: >> >> [quote] >> The schema for the sqlite_sequence table is: >> >> CREATE TABLE sqlite_sequence(name,seq); >> >> There is a single row in the sqlite_sequence table for each ordinary >> table that uses AUTOINCREMENT. The name of the table (as it appears in >> sqlite_master.name) is in the sqlite_sequence.main field and the >> largest INTEGER PRIMARY KEY ever used by that table is in the >> sqlite_sequence.seq field. >> [/quote] >> >> That should be changed to: >> >> [changes} >> The name of the table (as it appears in sqlite_master.name) is in the >> sqlite_sequence._name_ field >> [/changes] >> >> Could someone please correct that? The changes are between the underscores. >> >> Thank you. >> >>> >>> Hope this helps >>> >>> >>>>> >>>>> On Wed, Apr 13, 2016 at 4:54 AM, Igor Korot <ikorot01 at gmail.com> wrote: >>>>>> Hi, >>>>>> Is it possible to get whether the column is set to autoincrement or not? >>>>>> >>>>>> PRAGMA table_info() does not give such info... >>>>>> >>>>>> Thank you. >>> >>> -- >>> Regards, >>> Kees Nuyt >>> _______________________________________________ >>> sqlite-users mailing list >>> sqlite-users at mailinglists.sqlite.org >>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users at mailinglists.sqlite.org >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users >> >> >> >> >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users at mailinglists.sqlite.org >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users