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

SQL Anywhere 12.0.1 » SQL Anywhere サーバー SQL の使用法 » データ整合性 » エンティティ整合性と参照整合性

 

参照整合性アクション

他から参照されているプライマリキーの更新や削除に対して参照整合性を維持する最も単純な方法は、更新や削除を禁止することです。しかしそれ以外にも、参照整合性を保つために各外部キーを操作することもできます。データベース管理者やテーブル所有者は、CREATE TABLE 文と ALTER TABLE 文を使って、変更されたプライマリキーを参照している外部キーに対し、整合性の違反が発生したときに実行するアクションを指定できます。

注意

参照整合性アクションは、ユニークな値に対する「論理的な」更新ではなく「物理的な」更新によってトリガーされます。たとえば、大文字と小文字を区別しないデータベースでも、プライマリキーの値を SAMPLE-VALUE から sample-value に更新すると、2 つの値は論理的には同じであっても参照整合性アクションがトリガーされます。

次の参照整合性アクションは、プライマリキーの更新と削除に対してそれぞれ別に指定できます。

  • RESTRICT   参照されているプライマリキーの値をユーザーが変更しようとした場合、エラーを生成してその変更を防止します。これが参照整合性アクションのデフォルトです。

  • SET NULL   変更されたプライマリキーを参照するすべての外部キーの値を NULL にします。

  • SET DEFAULT   変更されたプライマリキーを参照するすべての外部キーを、そのカラムの (テーブル定義で指定されている) デフォルト値にします。

  • CASCADE   ON UPDATE とともに使用すると、更新されたプライマリキーを参照するすべての外部キーを新しい値に更新します。ON DELETE とともに使用すると、削除されたプライマリキーを参照する外部キーを含むすべてのローを削除します。

参照整合性アクションはシステムトリガーとして実装されます。トリガーはプライマリテーブル上で定義され、セカンダリテーブルの所有者のパーミッションを使って実行されます。つまり、特にパーミッションが与えられていなくても、所有者の違うテーブルに対するカスケード処理ができることになります。