This function is
EXPERIMENTAL. The behaviour of this function, the
name of this function, and anything else documented about this
function may change without notice in a future release of PHP.
Use this function at your own risk.
Given a PDO database handle and the special root object of a data graph,
examine the change summary in the datagraph and applies the changes
to the database.
The changes that it can apply can be creations of data objects,
deletes of data objects, and modifications to properties of data objects.
Parameters
PDO_database_handle
Constructed using the PDO extension.
A typical line to construct a PDO database handle might look like this:
$dbh = new PDO("mysql:dbname=COMPANYDB;host=localhost",DATABASE_USER,DATABASE_PASSWORD);
root_data_object
The special root object which is at the top of every SDO data graph.
Return Values
None.
Note however that the datagraph that was passed is still intact and usable.
Furthermore, if data objects were created and written back to a
table with autogenerated primary keys,
then those primary keys will now be set in the data objects.
If the changes were successfully written,
then the change summary associated with the datagraph will
have been cleared,
so that it is possible to now make further changes to the
data graph and apply those changes in turn.
In this way it is possible to work with the same data graph
and apply changes repeatedly.
Exceptions
SDO_DAS_Relational::applyChanges()
can throw an SDO_DAS_Relational_Exception if it is
unable to apply all the changes correctly.
The Relational DAS starts a database transaction before
beginning to apply the changes and will commit
the transaction only if they are all successful.
The Relational DAS generates qualified update and delete statements
which contain a where clause that specifies that the row to be
updated or deleted must contain the same values that it did
when the data was first retrieved.
This is how the the optimistic concurrency is implemented.
If any of the qualified update or delete statements fails to update or
delete their target row, it may be because the data has been altered
in the database in the meantime.
In any event, if any update fails for any reason,
the transaction is rolled back and an exception thrown.
The exception will contain the generated SQL statement that failed.
The Relational DAS also catches any PDO exceptions and obtains PDO
diagnostic information which it includes in an
SDO_DAS_Relational_Exception which it then throws.
Examples
Please see the
Examples
section in the general information about the Relational DAS
for many examples of calling this method.
Please see also the section on
Tracing
to see how you can see what SQL statements are
generated by the Relational DAS.