Sybase ASEには、プライマリテーブルにいくつかの監査テーブルとトリガーがあります。監査は非常に単純で、テーブルごとに挿入/更新/削除のトリガーがあり、操作が挿入、更新、削除のいずれであるか、ユーザーと時刻をマーク/フラグする追加の列を持つ同じ行を単純に挿入します。
現在、監査は重要ではないため、何らかの理由で監査トリガーが失敗した場合は、トリガーを起動した操作全体を強制終了しないようにします。
TableAにTableBに挿入するTriggerAがあるとします。
TableAでStatementXを実行すると、StatmentsYで構成されるTriggerAが起動され、TriggerAはSatementsYでTableBへの挿入に失敗します。現在、通常のパターンは、StatementXとStatementYの両方をロールバックして、整合性を確保することです。
StatementYが失敗した場合に、StatementXが中断されず、StatementXがコミットされたままになるように(つまり、StatementYのみがロールバックされるように)、トリガー内にセーブポイントを作成するという方法はありますか?