Update and Delete Semantics

The semantics of updating are straightforward.

Deleting a cell means, for that point in the n-dimensional space, there is no value. If that cell is included in a dataset and fetched by using IMDDataset::GetCellData, then the STATUS part of the consumer’s buffer has the value MDSTATUS_S_CELLEMPTY.

Deletion can also be accomplished by setting the STATUS part of the consumer’s buffer that corresponds to the VALUE column to MDSTATUS_S_CELLEMPTY, and calling IRowsetChange::SetData.

Updating Aggregate Cells

When updating a cell in the dataset that is an aggregate, what should happen to the cells below it? That is, what should happen to the cells that combine to create the aggregate? For example, all cells with the coordinate Qtr1 on the time dimension are aggregate cells because they depend on cells with a month as a coordinate (Jan, Feb, etc.).

In this case, behavior varies among providers. Some providers do not allow updates on nonatomic cells. Other providers allow a nonatomic cell to be updated, but they do not change the value of atomic cells beneath it.

The property MDPROP_AGGREGATECELL_UPDATE can be used by the consumer to find out whether a provider supports update of nonatomic cells. If it does, the property can also yield more information on a provider’s behavior when such a cell is updated.