トリガの互換性を保つには、トリガ機能とトリガ構文の互換性が必要です。この項では、Transact-SQL と SQL Anywhere トリガの機能の互換性の概要について説明します。
Adaptive Server Enterprise は、文レベルの AFTER トリガをサポートしています。つまり、このトリガは、トリガを起動する文が完了してから実行されます。SQL Anywhere は、ローレベルの BEFORE、AFTER、INSTEAD OF トリガと、文レベルの AFTER および INSTEAD OF トリガをサポートしています。トリガの概要を参照してください。
ロー・レベルのトリガは、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 文を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |