Mark Hedges wrote:
>> On Tue, 6 Jun 2006, Mark Hedges wrote:
>>> I didn't look closely.  This is another entity that has a
>>> timestamp DEFAULT CURRENT_TIMESTAMP() as a column of an MCPK.
>>>
>>> I tried adding
>>>
>>>  __PACKAGE__->load_components(qw( PK::Auto Core ));
>>>
>>> to the class package for this entity.  It doesn't help.  Same error.
>>>
>>> Probably because last_insert_id() is looking for an
>>> auto-increment value and doesn't know anything about timestamps.
>>>
>>> I'm going to fake this one using a DateTime->now from the
>>> script instead of trying to use the MySQL server's NOW().
> 
> On Wed, 7 Jun 2006, Jess Robinson wrote:
>> Umm, not sure I understand the restated problem, but if your DB is 
>> auto-filling fields and you want to retrieve them into your row object, 
>> you want to either:
>> write your own component thath overloads insert, just like PK::Auto does, 
>> for those fields
>> or:
>> Call ->discard_changes on your object, after inserting it, which will 
>> update it with values in the DB.
> 
> 
> The problem is that the auto-filled timestamp field is part of the MCPK.
> PK's for a support ticket system are originator e-mail, subject and timestamp.
> 
> If I overload insert, the only thing I have to go on are the two other
> fields of the MCPK.  I could do SELECT...ORDER BY timefield DESC LIMIT 1
> but that wouldn't be guaranteed to be the same row if someone else inserted
> another message in that split second.
> 
> I'm pretty sure discard_changes would behave the same way, since it doesn't
> yet have all the values of the MCPK with which to update it from the DB.
> 
> It is easiest just to pass a DateTime->now() for the field to $rs->create().
> That works fine.

Using timestamps in a PK is almost always a bad idea; I'd just add an 
auto-inc PK and use discard_changes. Indexes better anyway.

_______________________________________________
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/

Reply via email to