<!-- $Header: /usr/prj/pg/cvsroot/doc/doc/src/sgml/ref/set_transaction.sgml,v 1.5 2001/09/10 09:01:06 k-kondo Exp $ -->
<refentry id="SQL-SET-TRANSACTION">
 <docinfo>
  <date>2000-11-24</date>
 </docinfo>

 <refmeta>
  <refentrytitle id="SQL-SET-TRANSACTION-TITLE">SET TRANSACTION</refentrytitle>
  <refmiscinfo>SQL<!-- Language Statements -->言語</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>SET TRANSACTION</refname>
<!--  <refpurpose>Set the characteristics of the current SQL-transaction</refpurpose> -->
  <refpurpose>現在のSQLトランザクションの特性を設定します。<indexterm><primary>SET TRANSACTION</primary></indexterm><indexterm><primary>SQL</primary><secondary>SET TRANSACTION</secondary></indexterm><indexterm><primary sortas="とらんざくしょん">トランザクション</primary><secondary sortas="とくせい">特性</secondary></indexterm>
</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
<synopsis>
SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
</synopsis>
 </refsynopsisdiv>

 <refsect1>
<!--  <title>Description</title> -->
  <title>説明</title>

  <para>
<!--   This command sets the transaction isolation level.  The
   <command>SET TRANSACTION</command> command sets the characteristics
   for the current SQL-transaction. It has no effect on any subsequent
   transactions.  This command cannot be used after the first DML
   statement (<command>SELECT</command>, <command>INSERT</command>,
   <command>DELETE</command>, <command>UPDATE</command>,
   <command>FETCH</command>, <command>COPY</command>) of a transaction
   has been executed.  <command>SET SESSION CHARACTERISTICS</command>
   sets the default transaction isolation level for each transaction
   for a session.  <command>SET TRANSACTION</command> can override it
   for an individual transaction. -->

   このコマンドはトランザクションの隔離レベルを設定します。<command>SET TRANSACTION</command>コマンドは現在のSQLトランザクションの振る舞いを設定します。これはどんな後のトランザクションにも影響を及ぼしません．このコマンドはトランザクションで最初のDML文（<command>SELECT</command>、<command>INSERT</command>、<command>DELETE</command>、<command>UPDATE</command>、<command>FETCH</command>、<command>COPY</command>）が実行された後には使うことはできません。<command>SET SESSION CHARACTERISTICS</command>はそれぞれのセッションのトランザクションのデフォルトのトランザクションの隔離レベルを設定します。<command>SET TRANSACTION</command>で個々のトランザクションの隔離レベルを変更することができます。

  </para>

  <para>
<!--   The isolation level of a transaction determines what data the
   transaction can see when other transactions are running concurrently.  -->

   トランザクションの隔離レベルは他のトランザクションが並行して実行しているときに、トランザクションがどんなデータを見ることができるかを決定するものです。
</para>

   <variablelist>
    <varlistentry>
     <term>READ COMMITTED</term>
     <listitem>
      <para>
<!--       A statement can only see rows committed before it began. This
       is the default. -->

       1つの文はそれが開始される前にコミットされた行のみを見ることができます。これがデフォルトです。

      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term>SERIALIZABLE</term>
     <listitem>
      <para>
<!--       The current transaction can only see rows committed before
       first DML statement was executed in this transaction. -->

       現在のトランザクションはこのトランザクションで最初のDML文が実行される前にコミットされた行だけを見ることができます。

      </para>
      <tip>
       <para>
<!--        Intuitively, serializable means that two concurrent
        transactions will leave the database in the same state as if
        the two has been executed strictly after one another in either
        order. -->

	直感的にいうと、SERIALIZABLEでは、2つの同時に実行されたトランザクションが作り出したデータベースの状態が、あたかもそれぞれが順に実行した場合と同じになるようになります。
	
       </para>
      </tip>
     </listitem>
    </varlistentry>
   </variablelist>
 </refsect1>

 <refsect1 id="R1-SQL-SET-TRANSACTION-3">
<!--  <title>Compatibility</title> -->
  <title>互換性</title>

  <refsect2 id="R2-SQL-SET-TRANSACTION-4">
   <title>SQL92、SQL99</title>

   <para>
<!--    SERIALIZABLE is the default level in <acronym>SQL</acronym>.
    Postgres does not provide the isolation levels <option>READ
     UNCOMMITTED</option> and <option>REPEATABLE READ</option>. Because
    of multi-version concurrency control, the serializable level is not
    truly serializable. See the <citetitle>User's Guide</citetitle> for
    details. -->

    SERIALIZABLEは<acronym>SQL</acronym>における標準のレベルです。Postgresは<option>READ UNCOMMITTED</option>と<option>REPEATABLE READ</option>という隔離レベルを提供していません。MVCC（多版型同時実行制御）があるので、シリアライザブルレベルは厳密にはシリアライザブルではありません。詳細は<citetitle>&user-guide;</citetitle>を参照してください。

   </para>

   <para>
<!--    In <acronym>SQL</acronym> there are two other transaction
    characteristics that can be set with these commands: whether the
    transaction is read-only and the size of the diagnostics area.
    Neither of these concepts are supported in Postgres.  -->

    <acronym>SQL</acronym>ではこれらのコマンドでセットすることができる他の2つのトランザクションの特性があります。トランザクションが読み取り専用であるかどうかということと診断領域のサイズです。これらの概念はPostgresではサポートされていません。

   </para>
  </refsect2>
 </refsect1>
</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode:sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:("/usr/lib/sgml/catalog")
sgml-local-ecat-files:nil
End:
-->
