[prev] [thread] [next] [Date index for 2004/10/19]
Given the following simple schema: CREATE TABLE artist ( artistid INTEGER PRIMARY KEY, name VARCHAR); And the associated Class DBI definition, Music.pm: package Music::DBI; use base 'Class::DBI'; Music::DBI->connection('dbi:SQLite:dbname=music.sqlite', '', ''); package Music::Artist; use base 'Music::DBI'; Music::Artist->table('artist'); Music::Artist->columns(All => qw/artistid name/); I get the following warning when I create a new artist using this code snippet: use Music; my $artist = Music::Artist->create({ name => 'U2' }); "Use of uninitialized value in subroutine entry at /Library/Perl/5.8.4/DBIx/ContextualFetch.pm line 51." The Class::DBI caller is Class::DBI::_insert_row(). If I point a break point at Class/DBI.pm:636, the class data shows that the uninitialized value is the primary key for this object: 0 HASH(0x1982e78) 'artistid' => undef 'name' => 'U2' Do I need to specify the primary key for each new object I create? (I've been using sequences for my Postgres databases, but this is my first time using Class::DBI w/ SQLite. I'd really like the automatic primary key generation.) I noticed Class::DBI::SQLite overrides _auto_increment_value(), but adding this to my class definition fix the warning. I worked around the problem by overriding _insert_row() and having it call my own _auto_increment_value() if the primary key is not defined. How are other people using SQLite? I'm using Class::DBI v0.96, DBD::SQLite 1.07, and SQLite 3. Thanks, Drew
generating primary keys w/ SQLite?
|
Generated at 11:34 on 01 Dec 2004 by mariachi v0.52