On Mon, 03 Sep 2007 18:05:05 -0300, you wrote: >Hi Kees, > >He is telling about the Rowid the unique number that represents each row >in the table, not about a table column named "ID" or anything else, or >the primary key of the table. > >[]'s, > >Marco Antonio Abreu >IT Quality Systems >[EMAIL PROTECTED] >http://www.itquality.com.br
You are right, but if a column is defined as INTEGER PRIMARY KEY it acts as an alias for the (physical) ROWID, so it acually describes the same case. Definition: http://www.sqlite.org/lang_createtable.html says: Specifying a PRIMARY KEY normally just creates a UNIQUE index on the corresponding columns. However, if primary key is on a single column that has datatype INTEGER, then that column is used internally as the actual key of the B-Tree for the table. This means that the column may only hold unique integer values. [...] If a table does not have an INTEGER PRIMARY KEY column, then the B-Tree key will be a automatically generated integer. The B-Tree key for a row can always be accessed using one of the special names "ROWID", "OID", or "_ROWID_". This is true regardless of whether or not there is an INTEGER PRIMARY KEY. [...] Proof: CREATE TABLE testTbl( t_name TEXT ); INSERT INTO testTbl VALUES('d1'); INSERT INTO testTbl VALUES('d2'); INSERT INTO testTbl VALUES('d3'); INSERT INTO testTbl VALUES('d4'); SELECT ROWID,t_name FROM testTbl; 1|d1 2|d2 3|d3 4|d4 DELETE FROM testTbl WHERE t_name='d2'; SELECT ROWID,t_name FROM testTbl; 1|d1 3|d3 4|d4 same picture.. Regards, -- ( Kees Nuyt ) c[_] ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------