Patent ID: 7552150

Claim:
A method comprising: storing a first reason identifier in a first plurality of rows in a source version of a database, wherein the first reason identifier identifies a first change to the first plurality of rows in the source version of the database, wherein the first plurality of rows comprise a first plurality of row identifiers; in response to a promote operation that specifies the first reason identifier, the source version, and a target version of the database, determining whether a second plurality of rows exists in the target version that comprises a second plurality of row identifiers, whether the second plurality of row identifiers and the first plurality of row identifiers are identical, and whether a second reason identifier is complete and is different from the first reason identifier, wherein the second reason identifier identifies a second change to the second plurality of rows in the target version of the database, wherein the second reason identifier is complete when a most-recent version of the database to accept a change associated with the second reason identifier is higher in a sequence of a plurality of database versions than the target database version, wherein the sequence comprises a time order of the plurality of versions of the database, wherein the versions of the database that are higher in the sequence contain data that was added at an earlier time than the versions of the database that are lower in the sequence, wherein the promote operation requests moving the change upwards in the sequence; when the second plurality of rows exists in the target version that comprises the second plurality of row identifiers and the second reason identifier, the second plurality of row identifiers and the first plurality of row identifiers are identical, and the second reason identifier is complete and is different from the first reason identifier, copying the first plurality of rows to the second plurality of rows; when the second plurality of rows exists in the target version that comprises the second plurality of row identifiers that are identical to the first plurality of row identifiers and the second reason identifier is not complete and is different from the first reason identifier, linking the first reason identifier and the second reason identifier, and in response to a command that specifies the first reason identifier, performing the command against the first reason identifier and the second reason identifier that is linked to the first reason identifier; and when the second plurality of row identifiers are not identical to the first plurality of row identifiers, copying the first plurality of rows to the target version and refraining from linking the first reason identifier and the second reason identifier.