<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="mmres://user_interface_reference.css" rel="stylesheet" type="text/css">
<title>CFTRANSACTION</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
   <div id="説明">
   <table cellpadding="0" cellspacing="0" border="0" width="100%" class="main">
      <tr> 
         <td valign="top" class="name">CFTRANSACTION</td>
         <td valign="top" nowrap class="compatibility">&nbsp;</td>
      </tr>
      <tr>
         <td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
      </tr>


    </td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="description"><span class="title">説明</span>
<p>
トランザクション処理をサポートするエンタープライズデータベース管理システムの場合、そのデータベース管理システムに対し、複数のデータベースオペレーションを単一のトランザクションとして処理するように指示します。データベースのコミットおよびロールバック処理を実行できます。使用するデータベース管理システムが SQL トランザクション処理をサポートするかどうかについては、そのシステムのドキュメントを参照してください。
</p>
    </td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="description"><span class="title">カテゴリ</span>
<p>
データベース操作タグ
</p>
  <tr>
    <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="syntax"><span class="title">シンタックス</span><pre>&lt;cftransaction
   action = &quot;begin&quot;、&quot;commit&quot;、&quot;rollback&quot; のいずれか
   isolation = &quot;read_uncommitted&quot;、&quot;read_committed&quot;、
      &quot;repeatable_read&quot; のいずれか &gt;
&lt;/cftransaction&gt;
</pre>    </td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="description"><span class="title">関連項目</span>
<p>
cfinsert、cfprocparam、cfprocresult、cfquery、cfqueryparam、cfstoredproc、cfupdate、『ColdFusion MX 開発ガイド』の第19章の「SQL データベースおよび SQL について」 の「コミット、ロールバック、およびトランザクション」
</p>

<p>

</p>
    </td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="description"><span class="title">使用方法</span>
<p>
action 属性の値を指定しない場合、自動トランザクション処理は次のように進行します。
</p>
<ul>

<li>トランザクションブロック内の cfquery オペレーションがエラーなしで完了した場合、このトランザクションはコミットされます。</li>

<li>cfquery タグが cftransaction ブロック内でエラーを生成した場合、このトランザクション内のすべての cfquery オペレーションがロールバックされます。</li>
</ul>

<p>
isolation 属性の値を指定しない場合、ColdFusion は関連付けられたデータベースに対してデフォルトの隔離レベルを使用します。
</p>

<p>
ただし、CFML エラー処理と action 属性を使用すると、データベースクエリーの成否に基づいて、トランザクションをコミットするかロールバックするかを明示的に制御することもできます。ブロック内では、次の操作が可能です。
</p>
<ul>

<li>トランザクションブロック内に &lt;cftransaction action = &quot;commit&quot;/&gt; タグをネストすることによって、データベーストランザクションをコミットします。</li>

<li>ブロック内に &lt;cftransaction action = &quot;rollback&quot;/&gt; タグをネストすることによって、トランザクションをロールバックします。 </li>
</ul>

<p>
これらの例では、スラッシュを終了タグの代わりのシンタックスとして使用します。
</p>

<p>
1 つのトランザクションブロック内で、複数のデータベースへクエリーを書き込むことができます。ただし、別のデータベースにクエリーを書き込む前には、1 つのデータベースへのトランザクションをコミットするか、ロールバックする必要があります。 
</p>

<p>
データベースエンジンによるトランザクション中のロックの方法を制御するには、isolation 属性を使用します。 
</p>
    </td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
  </tr>
  <tr>
    <td valign="top" colspan="2" class="description"><span class="title">例</span><pre>&lt;p&gt;CFTRANSACTION を使用して、CFQUERY を使用する
複数のクエリーを 1 つのビジネスイベントにグループ化できます。クエリーによってリクエストされるデータに対す
る変更は、
トランザクションブロック内のすべてのアクションが
問題なく実行されるまでコミットされません。
&lt;p&gt;これは表示専用の例です。 
&lt;!--- 
&lt;cftransaction&gt;
   &lt;cfquery name=&#39;makeNewCourse&#39; datasource=&#39;Snippets&#39;&gt;
   INSERT INTO Courses
      (Number, Descript)
   VALUES
      (&#39;#myNumber#&#39;, &#39;#myDescription#&#39;)
   &lt;/cfquery&gt;

   &lt;cfquery name=&#39;insertNewCourseToList&#39; datasource=&#39;Snippets&#39;&gt;
   INSERT INTO CourseList
      (CorNumber, CorDesc, Dept_ID,
      CorName, CorLevel, LastUpdate)
   VALUES
      (&#39;#myNumber#&#39;, &#39;#myDescription#&#39;, &#39;#myDepartment#&#39;,
      &#39;#myDescription#&#39;, &#39;#myCorLevel#&#39;, #Now()#)
   &lt;/cfquery&gt;
&lt;/cftransaction&gt; 
---&gt;
</pre>
         </td>
      </tr>
   </table>
   </div>
<div id="ACTION">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>  
<td valign="top" class="name">ACTION</td>
  <td valign="top" nowrap class="compatibility">&nbsp;</td>
  </tr>
  <tr>
  <td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
  </tr>

  <tr>
  <td valign="top" class="syntax">&nbsp;</td>
  <td valign="top" nowrap class="requirements">オプション</td>
  </tr>
  <tr>
  <td colspan="2" class="clearseparation">&nbsp;</td>
  </tr>
  <tr>
  <td valign="top" colspan="2" class="description">

<strong>Default value:</strong> "begin"

<ul>

<li>begin: 実行するコードのブロックの先頭です。</li>

<li>commit: 未処理のトランザクションをコミットします。</li>

<li>rollback: 未処理のトラザクションをロールバックします。</li>
</ul>


  </td>
  </tr>
  </table>
</div>
<div id="ISOLATION">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>  
<td valign="top" class="name">ISOLATION</td>
  <td valign="top" nowrap class="compatibility">&nbsp;</td>
  </tr>
  <tr>
  <td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
  </tr>

  <tr>
  <td valign="top" class="syntax">&nbsp;</td>
  <td valign="top" nowrap class="requirements">オプション</td>
  </tr>
  <tr>
  <td colspan="2" class="clearseparation">&nbsp;</td>
  </tr>
  <tr>
  <td valign="top" colspan="2" class="description">



<p>ODBC のロックタイプです。 </p><ul>

<li>read_uncommitted: 発生する他のトランザクションには関係なく、読み込みます。読み込まれるデータが遷移中のもので正確でない場合、`dirty read' と呼ばれることがあります。</li>

<li>read_committed: 共有ロックを使用して、このトランザクションが使用する行を他のトランザクションが修正しないようにします。</li>

<li>repeatable_read: レコードセット内の行がトランザクションが完了するまで排他的にロックされること以外は、read committed の場合と同じです。オーバーヘッドが大きくなるため、通常のデータベースアクセスにこの隔離レベルを使用することはお勧めしません。</li>

<li>serializable: トランザクションの実行中、使用する各データテーブルに排他的ロックを設定します。データベースへのアクセスがシングルスレッドになるため、通常のデータベースアクセスにはお勧めしません。</li>
</ul>


  </td>
  </tr>
  </table>
</div>

  </body>
</html>
