## Removed from UPDATE.pod: =head2 Update a row or rows using a column calculation -- Yet another pointless example UPDATE users SET username = username || '.uk' WHERE id = 1; =over =item 1. Create a Schema object representing the database you are working with: my $schema = MyDatabase::Schema->connect('dbi:SQLite:my.db'); =item 2. Call the B method on the resultset for the L you wish to fetch data from: my $fred_user = $schema->resultset('User')->find({ id => 1 }); The Row object has an B method that will change the values on the object, and send an UPDATE query to the database. =item 3. Call the B method, passing it a hashref of new data: # this won't yet work, DBIC for now mandates the [ {} => $value ] format, the simple \[ $sql, $value1, $value2 ] will start being recognized later on # the only documentation we currently have is this, if you can turn it into a DBIC pod-patch it will be freaking awesome # https://github.com/dbsrgits/dbix-class/commit/0e773352 $fred_user->update({ username => \['username || ?', '.uk'] }); ^^ you never got around to this # the DBIC syntax is a tad different from te thing above (i.e. we no longer encourage 'dummy' crap) The \[ .. ] syntax here is described in L documentation, used for passing bind parameters. =back =head2 Update a row based on data in other tables -- Slightly less pointless example UPDATE posts SET title = user.username || title JOIN users user ON user.id = posts.user_id; Joining two tables for an update is a similar sort of exercise to joining them for a select query and using data from both. =over =item 1. Create a Schema object representing the database you are working with: my $schema = MyDatabase::Schema->connect('dbi:SQLite:my.db'); =item 2. Call the B method on the resultset for the L you wish to update data in, joining to the second table: my $posts = $schema->resultset('Post')->search( {}, { join => 'user' } ); The B key takes as an argument a nested structure of one or more relation names (see L). =item 3. Call the B method on the resultset to run the UPDATE statement: $posts->update({ 'me.title' => \[ 'user.username || me.title' ] }); ^^ I am 95% sure this won't actually work, please try it (ideally as a passing or failing test) =back