I wroe this code to get ROWID, but if I assign output of sqlite3_step to an id, and assign that id, is OK?.
const char * rowidSql = "SELECT max(ROWID)+1 "EVENTLOG_TBL ; const char * zSql; sqlite3_stmt * pStmt, pStmt2; /* This is added to run query to get ROWID */ rc = sqlite3_prepare(pDB, rowidSql, -1, &pStmt2, 0); if( rc != SQLITE_OK ) { ADP_PRINTF ("sqlite3_prepare failed for %s\n", rowidSql); return (ERROR); } eventLogRowIndex = sqlite3_step(pStmt2) sqlite3_bind_int(pStmt, 1, eventLogRowIndex); On Fri, Feb 5, 2010 at 3:30 PM, Shane Harrelson <sh...@sqlite.org> wrote: > As stated before, in general, you should not specify the ROWID on inserts, > but instead, let the database engine choose it for you. > This is true of most/all database engines. > > The syntax you're trying below is not supported. Indeed, even it were, > max(ROWID) is the maximum ROWID *in use*. Trying to insert another row > with > the same ROWID will result in a collision. > > At the very least you would need to do something like "SELECT max(ROWID)+1 > from EVENTLOG_TBL;", use sqlite_step() to run this query, and bind the > ROWID > returned here into your insert statement and run that. > > You can read more on SQLite's ROWID usage at > http://www.sqlite.org/search?q=rowid > > HTH. > -Shane > > > > > On Fri, Feb 5, 2010 at 3:22 PM, Vasanta <vtan...@gmail.com> wrote: > > > This is my actual string, still not working: > > > > const char * replaceSql = "INSERT INTO "EVENTLOG_TBL \ > > "(_ROWID_, component, facilityId, logLevel,"\ > > "textMessage, binMessage) VALUES(?,?,?,?,?,?); > > SELECT max(ROWID) from EVENTLOG_TBL"; > > > > > > On Fri, Feb 5, 2010 at 3:05 PM, Vasanta <vtan...@gmail.com> wrote: > > > > > Thanks jay. > > > > > > Can I combine like this: > > > > > > "INSERT INTO trends(UnitID,HeureTrends,DateTrends) VALUES(?,?,?);SELECT > > > max(ROWID) FROM table-name"; > > > > > > or > > > > > > "INSERT INTO trends(UnitID,HeureTrends,DateTrends) VALUES(?,?,?);SELECT > > > last_insert_rowid() AS [ID]"; > > > > > > > > > On Fri, Feb 5, 2010 at 2:49 PM, Jay A. Kreibich <j...@kreibi.ch> wrote: > > > > > >> On Fri, Feb 05, 2010 at 02:28:33PM -0500, Vasanta scratched on the > wall: > > >> > command "SELECT rowid from table-name;" gives all rows from 1 to > 100 > > >> for > > >> > total 100 rows, any command to get last rowid?. I need insert from > > last > > >> > rowid onwards (if table already 100 records, need to insert from 101 > > >> > onwards) > > >> > > >> SELECT max(ROWID) FROM table-name; > > >> > > >> > > >> You shouldn't be setting ROWIDs manually, however. Just insert the > > >> row and let SQLite pick the ROWID. If you have a ROWID alias in the > > >> form of an INTEGER PRIMARY KEY, in most cases you should still just > > >> let SQLite pick the value, possibly with AUTOINCREMENT. > > >> > > >> -j > > >> > > >> -- > > >> Jay A. Kreibich < J A Y @ K R E I B I.C H > > > >> > > >> "Our opponent is an alien starship packed with atomic bombs. We have > > >> a protractor." "I'll go home and see if I can scrounge up a ruler > > >> and a piece of string." --from Anathem by Neal Stephenson > > >> _______________________________________________ > > >> sqlite-users mailing list > > >> sqlite-users@sqlite.org > > >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > >> > > > > > > > > _______________________________________________ > > sqlite-users mailing list > > sqlite-users@sqlite.org > > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users