Sql updating multiple tables at once
We can easily contrive for an “updates” table to exist by creating a temporary table and populating it.It is relatively straightforward to populate a table with multiple rows with just one query (or at least, far fewer queries than the number of rows desired).In this case there are two distinct values, so we can do it in two UPDATE statements: So we can reduce the number of queries from five to two. But the extent to which this helps us reduces as the proportion of distinct SET values goes up.Eventually every SET value is different, for example: UPDATE staff SET salary = 1125 WHERE name = ' Bob'; UPDATE staff SET salary = 1200 WHERE name = ' Jane'; UPDATE staff SET salary = 1100 WHERE name = ' Frank'; UPDATE staff SET salary = 1175 WHERE name = ' Susan'; UPDATE staff SET salary = 1150 WHERE name = ' John'; Since every SET clause is now different, we can’t coalesce any queries using the approaches mentioned before, so we still have one UPDATE statement for every row requiring changes. What if we had a database table which contained a representation of the updates we wanted to make, e.g.
If we want to update more than one column, whereas previously we specified the new value using a scalar, when there is more than one column to update, we use an Array Ref.
If there is no database-specific subclass for the database in use, then will just use the base class which implements approaches that should work for any SQL database.
At the time of writing, the only database-specific subclass is for Postgre SQL. Let’s expand the original table a bit: “name” has now been split into “first_name” and “last_name”.
and we could persuade the database server to apply those updates to the target table?
This is in fact entirely possible in many database systems.