String identifiers are signed 64-bit integers, so the maximum is 0x7FFFFFFFFFFFFFFFFFLL. But if the identifier of a negative or zero line is entered explicitly, the automatically generated line identifiers are always greater than zero. If you can be sure that line identifiers will always be generated automatically, then zero or -1 will be safe values ββto return the error status.
Thinking more, I understand that calling the sqlite3_last_insert_rowid API call returns zero if nothing has ever been inserted into the table, which makes zero de facto an "invalid" row identifier.
source share