[CDBI] Fwd: find_or_create() barfs with constraints

Aaron Turner aturner at musecurity.com
Tue Aug 2 23:53:38 BST 2005


Ok, but what if the unique key is not the primary key?

--  
Aaron Turner, Sr. Security Engineer                        
<aturner at musecurity.com>


On Aug 2, 2005, at 12:17 PM, Rhesa Rozendaal wrote:

> Aaron Turner wrote:
>
>> I'm looking to insert a record in table if it doesn't already  
>> exist.   I've also created a unique key (across two columns) to  
>> prevent other  access not via Class::DBI from causing problems.
>>
>
> [snip]
>
>
>> __PACKAGE__->table('mucore.variant_type');
>> __PACKAGE__->sequence('mucore.variant_type_variant_typeid_seq');
>> __PACKAGE__->columns(All => qw/variant_typeID suite_typeID   
>> next_mutationID name description/);
>>
>
> You should inform Class::DBI about the multi-column primary key:
>
>   __PACKAGE__->columns(Primary => qw/variant_typeID suite_typeID/);
>
> then add the other columns:
>
>   __PACKAGE__->columns(Essential => qw/next_mutationID name
>                                        description/);
>
>
>> # Note that there is a unique key over suite_typeID/name
>>
>
> If you only supply the All column group, Class::DBI assumes the  
> first column is your primary key. In most cases that is sufficient,  
> but in this case you need to be explicit.
>
> Hope that helps,
> Rhesa
>
>





More information about the ClassDBI mailing list