//-----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation.
//
//-----------------------------------------------------------------------
namespace Microsoft.Isam.Esent.Interop
{
///
/// Update types for JetPrepareUpdate.
///
public enum JET_prep
{
///
/// This flag causes the cursor to prepare for an insert of a new record.
/// All the data is initialized to the default state for the record.
/// If the table has an auto-increment column, then a new value is
/// assigned to this record regardless of whether the update ultimately
/// succeeds, fails or is cancelled.
///
Insert = 0,
///
/// This flag causes the cursor to prepare for a replace of the current
/// record. If the table has a version column, then the version column
/// is set to the next value in its sequence. If this update does not
/// complete, then the version value in the record will be unaffected.
/// An update lock is taken on the record to prevent other sessions
/// from updating this record before this session completes.
///
Replace = 2,
///
/// This flag causes JetPrepareUpdate to cancel the update for this cursor.
///
Cancel = 3,
///
/// This flag is similar to JET_prepReplace, but no lock is taken to prevent
/// other sessions from updating this record. Instead, this session may receive
/// JET_errWriteConflict when it calls JetUpdate to complete the update.
///
ReplaceNoLock = 4,
///
/// This flag causes the cursor to prepare for an insert of a copy of the
/// existing record. There must be a current record if this option is used.
/// The initial state of the new record is copied from the current record.
/// Long values that are stored off-record are virtually copied.
///
InsertCopy = 5,
///
/// This flag causes the cursor to prepare for an insert of the same record,
/// and a delete or the original record. It is used in cases in which the
/// primary key has changed.
///
InsertCopyDeleteOriginal = 7,
}
}