[Gambas-user] Connection.Tables
tobias
tobiasboe1 at ...20...
Sun Dec 5 19:50:51 CET 2010
>> You can't update the primary index of a table once it has been created anyway.
>>
>> I have understood where the bug with primary key comes from. It is just a
>> matter of case: write "integer" in upper case, and the database driver will
>> detect the primary key!
>>
>> To understand all that, you must be aware that SQLite is a non-typed database,
>> i.e. the field datatypes given in the CREATE TABLE statement are mostly
>> ignored. A SQLite field can hold any datatype, whatever its definition!
>>
>> "Mostly", because there is a big exception: if you declare a field as "integer
>> primary key", you actually declare a 64 bits integer-only field that will
>> increment automatically as each record creation. And this special primary key
>> does not appear in the index list returned by SQLite (because it is actually
>> an index present in each table, named "rowid").
>>
>> See http://www.sqlite.org/lang_createtable.html for more information.
>>
>> To detect it, I added a test on the table SQL declaration: if I don't see any
>> index in the table, and if the table has an integer field, I assume it is the
>> primary key.
>>
>> The test is not perfect yet (a table could have an "integer" field and no
>> primary key), but, more important, it was buggy, as it assumed that "integer"
>> was written in upper case!
>>
>> I will fix that in the next revision, and your "id integer primary key" will
>> be correctly detected as the primary key of the table.
>>
>> Note that if you create your table by using the Gambas interface, and not by
>> sending "CREATE TABLE" statements directly, you won't have the problem,
>> because Gambas only uses "integer" when creating an autoincrement integer
>> field. For all other integer fields, it uses "INT4".
>>
>> Regards,
>>
to be correct, that revision is this about? i couldn't find it in the ide?
More information about the User
mailing list