[Dbix-class] last insert id problem with Oracle
Anthony Lincoln
ahlincoln at lbl.gov
Mon Jul 10 22:24:11 CEST 2006
Anthony Lincoln wrote:
> Matt S Trout wrote:
>
>>Anthony Lincoln wrote:
>>
>>
>>>package ccm::Model::CCMData::Issweb::CcmChange;
>>>
>>>use strict;
>>>use warnings;
>>>use base 'DBIx::Class::Core';
>>>
>>>__PACKAGE__->load_components(qw/PK::Auto Core/);
>>>__PACKAGE__->table('ccm_change');
>>>__PACKAGE__->add_columns(qw/id owner name prereq_id dependent description
>>> backout_plan visibility risk sys_criticality
>>> sys_affected qa_difficulty install_difficulty
>>> problem_visibility completed creator created/);
>>>__PACKAGE__->set_primary_key('id');
>>>__PACKAGE__->sequence('ccm_seq');
>>
>>
>>Is your sequence "just a sequence" or do you have a trigger defined to
>>populate ccm_change from it? PK::Auto expects the database to populate the key
>>during INSERT; it doesn't read the sequence to populate it itself.
>
>
> There's a trigger defined to autoincrement ccm_change.id. All that
> seems to work fine.
>
> CREATE TRIGGER ccm_user_trig
> BEFORE INSERT ON ccm_user
> FOR EACH ROW
> BEGIN
> SELECT ccm_seq.nextval INTO :new.id from dual;
> END;
> .
> RUN;
Sorry, doing three things at once. Here's the appropriate trigger:
CREATE TRIGGER ccm_chg_trig
BEFORE INSERT ON ccm_change
FOR EACH ROW
BEGIN
SELECT ccm_seq.nextval INTO :new.id from dual;
SELECT sysdate INTO :new.created from dual;
END;
.
RUN;
More information about the Dbix-class
mailing list