[Dbix-class] DBIx::Class::Index::Simple

Jess Robinson castaway at desert-island.me.uk
Mon Apr 7 09:46:10 BST 2008


On Wed, 2 Apr 2008, Peter Rabbitson wrote:

> Mark Lawrence wrote:
>> On Tue Apr 01, 2008 at 08:35:38PM -0500, Jonathan Rockway wrote:
>>> * On Tue, Apr 01 2008, Peter Rabbitson wrote:
>>>
>>>>  __PACKAGE__->add_columns(
>>>>    id => { data_type => 'integer', is_auto_increment => 1 },
>>>>    starts_at => { data_type => 'datetime' },
>>>> -  created_on => { data_type => 'timestamp' }
>>>> +  created_on => { data_type => 'timestamp', index_as => 
>>>> 'created_test_simple_idx' }
>>>>  );
>>> The problem with this syntax is that you can only index one column.  Why
>>> not do:
>>>
>>>   __PACKAGE__->add_index( idx_foo_bar => [qw/foo bar/] );
>> 
>> How often do you need to know the name of an index? Why not go one
>> simpler and do:
>>
>>     __PACKAGE__->add_index(qw/foo bar/);
>> 
>> Which could return the autogenerated name of the index. If you need the
>> name at a later (more dynamic stage perhaps) then maybe expose the
>> name generating method as well.
>> 
>
> When you generate several indexes per table, you need to be in full control 
> of naming so no clashes will occur. In the above example what would be the 
> index name? foo_bar? what if foo_bar is an indexed column too?
>

No you don't, the SQLT producers unique-ify them for you.

Jess



More information about the DBIx-Class mailing list