Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » SQL のダイアレクトと互換性 » SQL ダイアレクト » Transact-SQL のプロシージャ言語の概要

 

Transact-SQL のトリガの概要

トリガの互換性を保つには、トリガ機能とトリガ構文の互換性が必要です。この項では、Transact-SQL と SQL Anywhere トリガの機能の互換性の概要について説明します。

Adaptive Server Enterprise は、文レベルの AFTER トリガをサポートしています。つまり、このトリガは、トリガを起動する文が完了してから実行されます。SQL Anywhere は、ローレベルの BEFORE、AFTER、INSTEAD OF トリガと、文レベルの AFTER および INSTEAD OF トリガをサポートしています。トリガの概要を参照してください。

ロー・レベルのトリガは、Transact-SQL 互換性機能の一部ではありません。詳細については、プロシージャ、トリガ、バッチの使用で説明します。

サポートされない Transact-SQL トリガまたは異なる Transact-SQL トリガの説明

Transact-SQL トリガの機能の中で、SQL Anywhere ではサポートされない機能、または、SQL Anywhere では異なる機能を次に示します。

  • 他のトリガを起動するトリガ   トリガが別のトリガを起動することがあります。この状況での SQL Anywhere と Adaptive Server Enterprise の対応は、やや異なります。Adaptive Server Enterprise のデフォルトでは、トリガは設定可能なネスト・レベル (デフォルトは 16) まで、他のトリガを起動します。ネスト・レベルの設定は、Adaptive Server Enterprise のネストされたトリガ・オプションを使用します。SQL Anywhere では、メモリが不足していないかぎり、トリガは無制限に他のトリガを起動できます。

  • 自分自身を起動するトリガ   トリガが自分自身を起動する動作を行うことがあります。この状況での SQL Anywhere と Adaptive Server Enterprise の対応は、やや異なります。SQL Anywhere では、デフォルトで、Transact-SQL でないトリガは自分自身を再帰的に起動できます。一方、Transact-SQL ダイアレクトのトリガは自分自身を再帰的に起動することはできません。ただし、Transact-SQL ダイアレクトのトリガについては、SET 文 [T-SQL] の self_recursion オプションを使用して、トリガが自分自身を再帰的に呼び出すことを許可できます。SET 文 [T-SQL]を参照してください。

    Adaptive Server Enterprise のデフォルトでは、トリガは自分自身を再帰的に呼び出すことはできません。再帰を許可するには、self_recursion オプションを使用します。

  • トリガ中の ROLLBACK 文   Adaptive Server Enterprise は、トリガ中で、そのトリガを含むトランザクション全体をロールバックする ROLLBACK TRANSACTION 文を許可します。SQL Anywhere は、トリガで ROLLBACK (または ROLLBACK TRANSACTION) 文を許可しません。トリガとなる動作とそのトリガがともにアトミック・ステートメントを構成するためです。

    SQL Anywhere は、Adaptive Server Enterprise と互換性のある ROLLBACK TRIGGER 文を提供します。この文は、トリガ内で動作を取り消すために使用します。ROLLBACK TRIGGER 文を参照してください。