Thanx Jess, your suggestions are much more precious now cause you gave me nice clues I wasn't able to guess through DBIx::Class CPAN documentation. When i meant "left to the programmer" i was actually referring exactly to what you meant ( left to the DB ), in fact, in this particular case, i have to address both programming and DB issues :) ( so it is always a programmer TODO task :) )
Illface new tasks with some more weapons loaded now ... 'til the next level :) Igor >----- Original Message ----- >From: [EMAIL PROTECTED] >To: [email protected] >Data: Fri, 19 Jan 2007 09:24:01 +0000 (GMT) >Subject: Re: [Dbix-class] info Oracle: executing sql code for sequences or lock > >Hi Igor, > >On Thu, 18 Jan 2007, Igor Longagnani wrote: > >> Hi Jess, >> thanks for your precious information, but still ican't figure out how to >> do this even if the big picture is clear: >> >>> >>> No, if you just make sure you have the primary key set to >>> "is_auto_increment" in the add_columns, then copy will automatically >>> empty that field for you, and it should work just the same as when you >>> use ->create. (If that works, I assuming you are using triggers and >>> sequences?) >>> >>> Jess >> 1) what do you mean by "empty that field for me" ...? you mean that >> DBIx recognizes the "is_auto_increment" attribute so leaving to the >> programmer the responsiblity of producing those values? > >I mean that copy will set the value of the field to a null value, so that, >just like a normal initial insert, your database should automagically fill >in the new next sequence value for you. (Assuming thats what your create >currently does). Thats the opposite of what you suggested, >"is_auto_increment" lets DBIx::Class know that your database (or triggers >in your database) will fill that field. > >> 2) the primary key is multifield and ... I could , but no i don't think >> triggers are being used ON BEFORE INSERT to call any sequence, at present >> what would you suggest? > >Hmm, without worrying about copying or updating, start from a simple >beginning. What do you do to create a new object/row in this table? > >$schema->resultset('Tabname')->create({ center => 'foo', > altno => '(select max(altno)+1 >from tabname where center='foo')', > codpat => undef }); > >?? > >DBIx::Class's PK::Auto assumes that your database will fill sequence >values for you. If you don't have a database trigger to do that, I suggest >you try PK::Sequence, which is in the mailing list somewhere.. > >Jess > >> I do re-post here the rules for the multi field primary key: >> >> I have some table, lets say TABNAME (n.b. =$table in the Perl >> excerpt), >> with a multifield primary-key (CENTER,ALTNO,CODPAT): >> >> Rules for subkeys are: >> >> CENTER doesnt change >> ALTNOis max(ALTNO) where CENTER = <current CENTER value> >> CODPAT s taken form a sequence >> >> thanks again for your fast and detailed help. >> >> Igor >> >> _______________________________________________ >> List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class >> Wiki: http://dbix-class.shadowcatsystems.co.uk/ >> IRC: irc.perl.org#dbix-class >> SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/ >> Searchable Archive: http://www.mail-archive.com/[email protected]/ >> >> > >_______________________________________________ >List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class >Wiki: http://dbix-class.shadowcatsystems.co.uk/ >IRC: irc.perl.org#dbix-class >SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/ >Searchable Archive: http://www.mail-archive.com/[email protected]/ > _______________________________________________ List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class Wiki: http://dbix-class.shadowcatsystems.co.uk/ IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/ Searchable Archive: http://www.mail-archive.com/[email protected]/
