*** 210,229 **** method. This one method can be used to insert, delete, or update. The argv[0] parameter is the rowid of a row in the virtual table to be deleted. If argv[0] is NULL, then no deletion occurs. The argv[1] parameter is the rowid of a new row to be ! inserted into the virtual table. Subsequence argv[] entries contain values of the columns of the virtual table, in the order that the columns were declared. The number of columns will match the table declaration that the xConnect or xCreate method made using the ! sqlite3_declare_vtab() call. ! If argc==1, then no insert occurs. ! If argc>1 and argv[0]==argv[1] then the specified row ! is updated with new values contained in argv[2] and the ! following parameters. --- 210,232 ---- method. This one method can be used to insert, delete, or update. + argc specifies the number of entries in the argv array. Every argv entry will have a non-NULL value in C (but may contain the SQL value NULL). + The argv[0] parameter is the rowid of a row in the virtual table to be deleted. If argv[0] is NULL, then no deletion occurs. The argv[1] parameter is the rowid of a new row to be ! inserted into the virtual table. If argv[1] is NULL, then the implementation must choose a rowid for the newly inserted row. Subsequent argv[] entries contain values of the columns of the virtual table, in the order that the columns were declared. The number of columns will match the table declaration that the xConnect or xCreate method made using the ! sqlite3_declare_vtab() call. The implementation must set *pRowid to the id of the newly inserted row; this will become the value returned by the last_insert_rowid() function. ! Each call to xUpdate will fall into one of the following cases: ! *: argc == 1: the single row argv[0] is deleted; no insert occurs ! *: argc > 1 && argv[0] == NULL: a new row is inserted with rowid argv[1] ! *: argc > 1 && argv[0] != NULL && argv[0] == argv[1]: the row with rowid argv[0] is updated with new values in argv[2] and following parameters ! *: argc > 1 && argv[0] != NULL && argv[0] != argv[1]: the row with rowid argv[0] is updated with rowid argv[1] and new values in argv[2] and following parameters. This will occur when an SQL statement updates a rowid, as in the statement UPDATE table SET rowid=rowid+1 WHERE ...;