Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: ORM with version control?

by Corion (Pope)
on Feb 06, 2008 at 14:56 UTC ( #666574=note: print w/replies, xml ) Need Help??


in reply to ORM with version control?

Don't do this stuff in your ORM. Do that stuff in the database by using triggers. That way, you get the versioning even when you bypass the ORM (untested but taken from here):

CREATE TABLE foo ( $definitions ); CREATE TABLE foo_versions ( username VARCHAR(8) DEFAULT current_user(), timestamp DATETIME DEFAULT NOW(), action CHAR(1), -- IUD $definitions -- stores the values BEFORE the action ); CREATE TRIGGER foo_update BEFORE update ON foo FOR EACH ROW INSERT INTO foo_versions ('U',$columns); CREATE TRIGGER foo_delete BEFORE delete ON foo FOR EACH ROW INSERT INTO foo_versions ('D',$columns); CREATE TRIGGER foo_insert BEFORE update ON foo FOR EACH ROW INSERT INTO foo_versions ('I',$columns);

Of course, your versions table(s) will grow quickly, but as you'll only ever append to that table, you can truncate it at convenient times.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://666574]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2019-11-14 09:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Strict and warnings: which comes first?



    Results (76 votes). Check out past polls.

    Notices?