2012-04-19 21 views
1

Sybase ASEでは、プライマリ・テーブルにいくつかの監査テーブルとトリガがあります。監査は非常に簡単で、各テーブルの挿入/更新/削除のトリガーがあり、操作が挿入、更新、削除のいずれであったか、ユーザーと時刻のいずれであるかを/フラグで示す追加の列とともに単純な行を挿入します。挿入と更新のSybaseトリガ - 処理の失敗

監査は重要ではないため、何らかの理由で監査トリガーが失敗した場合は、トリガーを起動した操作全体を強制終了しないようにします。

Say TableAには、TableBに挿入されるTriggerAがあります。

StatementXを実行するTableAでStatementXを実行します.StatsmentsYからなるTriggerAは、TableBに挿入するSatementsYに失敗します。通常のパターンでは、StatementXとStatementYの両方をロールバックして整合性を確保しています。

StatementYが失敗した場合、StatementXにブレークがなく、StatementXがまだコミットされている(StatementYのみがロールバックされる)ように、トリガー内にセーブポイントを作成する方法はありますか?

答えて

1

それはできないと思います。データ修正文が 完了しており、Adaptive Serverは任意のデータ型、ルール、または 整合性制約違反をチェックした後にのみ

トリガが起動。トリガーとそれを起動するステートメントは、トリガー内からロールバックできる という単一のトランザクションとして扱われます。重大なエラーが検出されると、 トランザクション全体がロールバックされます。

詳細については、THISを確認してください。


を追加しました:あなたはまた、ロールバックトリガー上の情報のためTHISを確認することができますが、私はそれが正確に何をしたいではないと思います。

関連する問題