1*b1cdbd2cSJim Jagielski/************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_sdbc_TransactionIsolation_idl__ 24*b1cdbd2cSJim Jagielski#define __com_sun_star_sdbc_TransactionIsolation_idl__ 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski module com { module sun { module star { module sdbc { 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski/** distinguishes different possible transaction isolation levels. 30*b1cdbd2cSJim Jagielski */ 31*b1cdbd2cSJim Jagielskipublished constants TransactionIsolation 32*b1cdbd2cSJim Jagielski{ 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski /** indicates that transactions are not supported. 35*b1cdbd2cSJim Jagielski */ 36*b1cdbd2cSJim Jagielski const long NONE = 0; 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski /** Dirty reads, non-repeatable reads and phantom reads can occur. 39*b1cdbd2cSJim Jagielski This level allows a row changed by one transaction to be read 40*b1cdbd2cSJim Jagielski by another transaction before any changes in that row have been 41*b1cdbd2cSJim Jagielski committed (a "dirty read"). If any of the changes are rolled back, 42*b1cdbd2cSJim Jagielski the second transaction will have retrieved an invalid row. 43*b1cdbd2cSJim Jagielski */ 44*b1cdbd2cSJim Jagielski const long READ_UNCOMMITTED = 1; 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski /** Dirty reads are prevented; non-repeatable reads and phantom 47*b1cdbd2cSJim Jagielski reads can occur. This level only prohibits a transaction 48*b1cdbd2cSJim Jagielski from reading a row with uncommitted changes in it. 49*b1cdbd2cSJim Jagielski */ 50*b1cdbd2cSJim Jagielski const long READ_COMMITTED = 2; 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski /** Dirty reads and non-repeatable reads are prevented; phantom 53*b1cdbd2cSJim Jagielski reads can occur. This level prohibits a transaction from 54*b1cdbd2cSJim Jagielski reading a row with uncommitted changes in it, and it also 55*b1cdbd2cSJim Jagielski prohibits the situation where one transaction reads a row, 56*b1cdbd2cSJim Jagielski a second transaction alters the row, and the first transaction 57*b1cdbd2cSJim Jagielski rereads the row, getting different values the second time 58*b1cdbd2cSJim Jagielski (a "non-repeatable read"). 59*b1cdbd2cSJim Jagielski */ 60*b1cdbd2cSJim Jagielski const long REPEATABLE_READ = 4; 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski /** Dirty reads, non-repeatable reads and phantom reads are prevented. 63*b1cdbd2cSJim Jagielski This level includes the prohibitions in 64*b1cdbd2cSJim Jagielski <code>REPEATABLE_READ</code> 65*b1cdbd2cSJim Jagielski and further prohibits the 66*b1cdbd2cSJim Jagielski situation where one transaction reads all rows that satisfy 67*b1cdbd2cSJim Jagielski a WHERE condition, a second transaction inserts a row that 68*b1cdbd2cSJim Jagielski satisfies that WHERE condition, and the first transaction 69*b1cdbd2cSJim Jagielski rereads for the same condition, retrieving the additional 70*b1cdbd2cSJim Jagielski "phantom" row in the second read. 71*b1cdbd2cSJim Jagielski */ 72*b1cdbd2cSJim Jagielski const long SERIALIZABLE = 8; 73*b1cdbd2cSJim Jagielski}; 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski//============================================================================= 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski}; }; }; }; 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski/*=========================================================================== 80*b1cdbd2cSJim Jagielski===========================================================================*/ 81*b1cdbd2cSJim Jagielski#endif 82