|
アトミシティの原則は、所定のステートメントの実行が完了しなかった場合、データベースに部分的またはあいまいな影響を残してはいけない、ということです。たとえば、あるステートメントが 5 レコードの内 3 レコードを挿入したあとに失敗して、その 3 レコードを元に戻さなかった場合、操作を再試行するときにデータベースの一貫性は失われています。ステートメントがアトミックで実行の完了に失敗した場合、すべての変更はロールバックされ、データベースの一貫性は保たれます。この例では、5 レコードの挿入で 1 つでも失敗した場合は、1 つのレコードも挿入されてはいけません。
アトミシティの規則は、複数のレコードまたはテーブルを変更するステートメントで特に重要です。また、アトミシティの規則は、失敗した操作の再試行をより簡単にします。前の試行による部分的な影響も残っていないことが保証されるからです。
Pervasive PSQL は 2 つの方法でアトミシティを実施します。
トリガーは常に外部のデータ変更ステートメント(INSERT、DELETE、または UPDATE)によって開始され、すべてのデータ変更ステートメントはアトミックであるため、次のステートメントは、トリガー内またはトリガーによって起動されるプロシージャ内では使用できません。
言い換えると、トリガーは ATOMIC 複合ステートメントと同じ規則に従います。
ユーザーが起動した COMMIT WORK、ROLLBACK WORK、RELEASE SAVEPOINT、ROLLBACK TO SAVEPOINT ステートメントは、(アトミシティの目的で)システムが開始したトランザクションを終了させることはありません。
|